반응형
벡터의 n번째 요소마다 추출
저는 각 요소가 다음과 같은 벡터를 만들고 싶습니다.i+6th
다른 벡터의 요소.
예를 들어, 길이 120의 벡터에서 나는 각 요소가 값인 길이 20의 다른 벡터를 만들고 싶습니다.i, i+6, i+12, i+18...
초기 벡터, 즉.저는 원본의 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
오프셋/쉬프트가 f=0,...,n-1인 모든 n번째 요소를 선택하려면 다음을 사용합니다.
vec[mod(1:length(vec), n)==f]
물론, 이것을 멋진 기능으로 포장할 수 있습니다.
nth_element <- function(vec, interval, offset=0){
vec[mod(1:length(vec), interval)==mod(offset, interval)]
}
언급URL : https://stackoverflow.com/questions/5237557/extract-every-nth-element-of-a-vector
반응형
'sourcecode' 카테고리의 다른 글
참조:Chrome Developer Tools의 hover state (0) | 2023.06.12 |
---|---|
날짜 문자열이 ISO 및 UTC 형식인지 확인합니다. (0) | 2023.06.07 |
dbms_output 버퍼를 늘리는 방법은 무엇입니까? (0) | 2023.06.07 |
Excel 드롭다운 목록에서 글꼴 크기와 색상을 변경하려면 어떻게 해야 합니까? (0) | 2023.06.07 |
Oracle 수신기가 실행 중이지 않고 시작되지 않음 (0) | 2023.06.07 |