[r] 벡터의 모든 n 번째 요소 추출

각 요소가 i+6th다른 벡터 의 요소 인 벡터를 만들고 싶습니다 .

예를 들어 길이가 120 인 벡터에서는 각 요소가 i, i+6, i+12, i+18...초기 벡터의 값인 길이가 20 인 다른 벡터를 만들고 싶습니다 . 즉 원본의 6 번째 요소마다 추출하고 싶습니다.



답변

a <- 1:120
b <- a[seq(1, length(a), 6)]


답변

(이미 언급 한 seq 솔루션 이외의) 순차적 조각을 얻는 또 다른 요령은 짧은 논리 형 벡터를 사용하고 벡터 재활용을 사용하는 것입니다.

foo[ c( rep(FALSE, 5), TRUE ) ]


답변

꼭 같은 것이 아닌 두 가지를 요구한다고 생각합니다

원본의 모든 6 번째 요소를 추출하고 싶습니다.

시퀀스를 색인화하여이를 수행 할 수 있습니다.

foo <- 1:120
foo[1:20*6]

각 요소가 다른 벡터의 i + 6 번째 요소 인 벡터를 만들고 싶습니다.

이를 수행하는 쉬운 방법은 다음과 같은 때까지 FALSE를 사용하여 논리적 요소를 보완하는 것입니다 i+6.

foo <- 1:120
i <- 1
foo[1:(i+6)==(i+6)]
[1]   7  14  21  28  35  42  49  56  63  70  77  84  91  98 105 112 119

i <- 10
foo[1:(i+6)==(i+6)]
[1]  16  32  48  64  80  96 112


답변

에서 모든 n 번째 요소를 선택하려면 어떤 벡터의 시작 위치

nth_element <- function(vector, starting_position, n) {
  vector[seq(starting_position, length(vector), n)]
  }

# E.g.
vec <- 1:12

nth_element(vec, 1, 3)
# [1]  1  4  7 10

nth_element(vec, 2, 3)
# [1]  2  5  8 11


답변