반응형
벡터 / 행렬 끝까지 우아한 인덱싱
R에서 말할 수 i
있습니까? 위치 에서 벡터 / 행렬의 끝까지 모든 인덱스를 원합니까? 3 번째 열부터 부분 행렬을 원한다고 가정 해 보겠습니다. 나는 현재이 방법으로 만 알고 있습니다.
A = matrix(rep(1:8, each = 5), nrow = 5) # just generate some example matrix...
A[,3:ncol(A)] # get submatrix from 3rd column onwards
하지만 정말 써야 ncol(A)
하나요? "3 번째 열부터"라고 말하는 우아한 방법이 없나요? 같은 뭔가 A[,3:]
? (또는 A[,3:...]
)?
때로는 원하지 않는 것을 R에게 알리는 것이 더 쉽습니다 . 즉, 음의 인덱싱을 사용하여 행렬에서 열을 제외합니다.
둘 다 동일한 결과를 생성하는 두 가지 대체 방법은 다음과 같습니다.
A[, -(1:2)]
A[, -seq_len(2)]
결과 :
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 3 4 5 6 7 8
[2,] 3 4 5 6 7 8
[3,] 3 4 5 6 7 8
[4,] 3 4 5 6 7 8
[5,] 3 4 5 6 7 8
그러나 질문에 답하려면 : ncol
열 수를 찾는 데 사용 합니다. (비슷하게 nrow
행 수를 찾는 것이 있습니다.)
A[, 3:ncol(A)]
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 3 4 5 6 7 8
[2,] 3 4 5 6 7 8
[3,] 3 4 5 6 7 8
[4,] 3 4 5 6 7 8
[5,] 3 4 5 6 7 8
다음 행 (다른 예에 따라 열)의 경우 head()
와 tail()
활용 될 수있다.
A <- matrix(rep(1:8, each = 5), nrow = 5)
tail(A, 3)
거의 같다
A[3:dim(A)[1],]
(인쇄 된 행 이름 / 인덱스는 모두 다릅니다).
벡터 및 데이터 프레임에서도 작동합니다.
> tail(1:10, 4)
[1] 7 8 9 10
> tail(data.frame(A = 1:5, B = 1:5), 3)
A B
3 3 3
4 4 4
5 5 5
열 버전의 경우 조정할 수 tail()
있지만 조금 까다 롭습니다. 나는 궁금 NROW()
하고 NCOL()
보다는, 여기에 유용 할 수 있습니다 dim()
?
> A[, 3:NCOL(A)]
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 3 4 5 6 7 8
[2,] 3 4 5 6 7 8
[3,] 3 4 5 6 7 8
[4,] 3 4 5 6 7 8
[5,] 3 4 5 6 7 8
또는 이것을 머리에 대고 R에게 물건을 묻는 대신 물건을 떨어 뜨려달라고 요청하십시오. 이를 캡슐화하는 함수는 다음과 같습니다.
give <- function(x, i, dimen = 1L) {
ind <- seq_len(i-1)
if(isTRUE(all.equal(dimen, 1L))) { ## rows
out <- x[-ind, ]
} else if(isTRUE(all.equal(dimen, 2L))) { ## cols
out <- x[, -ind]
} else {
stop("Only for 2d objects")
}
out
}
> give(A, 3)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1 2 3 4 5 6 7 8
[2,] 1 2 3 4 5 6 7 8
[3,] 1 2 3 4 5 6 7 8
> give(A, 3, dimen = 2)
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 3 4 5 6 7 8
[2,] 3 4 5 6 7 8
[3,] 3 4 5 6 7 8
[4,] 3 4 5 6 7 8
[5,] 3 4 5 6 7 8
다음 지침을 사용할 수 있습니다.
A[, 3:length(A[, 1])]
참고 URL : https://stackoverflow.com/questions/7500644/elegant-indexing-up-to-end-of-vector-matrix
반응형
'developer tip' 카테고리의 다른 글
Git이 이전에 이동 한 파일을 확인하도록하기 (0) | 2020.11.18 |
---|---|
float가 정수인지 확인 (0) | 2020.11.18 |
bash 쉘 명령 행에 대한 매개 변수 -e의 의미는 무엇입니까? (0) | 2020.11.18 |
R % in % 연산자 (0) | 2020.11.18 |
Instagram API : 모든 사용자 미디어를 얻는 방법? (0) | 2020.11.18 |