Programing

위치별로 data.table에서 벡터로 열 추출

lottogame 2020. 11. 12. 07:41
반응형

위치별로 data.table에서 벡터로 열 추출


data.table에서 열을 위치별로 벡터로 추출하려면 어떻게해야합니까? 다음은 내가 시도한 코드 스 니펫입니다.

DT<-data.table(x=c(1,2),y=c(3,4),z=c(5,6))
DT
#   x y z
#1: 1 3 5
#2: 2 4 6

열 위치를 사용하여이 출력을 얻고 싶습니다.

DT$y 
#[1] 3 4
is.vector(DT$y)
#[1] TRUE

열 위치를 사용하여이 출력을 얻는 다른 방법

DT[,y] 
#[1] 3 4
is.vector(DT[,y])
#[1] TRUE

이것은 벡터를 제공하지 않습니다

DT[,2,with=FALSE]
#   y
#1: 3
#2: 4
is.vector(DT[,2,with=FALSE])
#[1] FALSE

이 두 가지는 작동하지 않습니다.

DT$noquote(names(DT)[2]) # Doesn't work
#Error: attempt to apply non-function

DT[,noquote(names(DT)[2])] # Doesn't work
#[1] y

그리고 이것은 벡터를 제공하지 않습니다.

DT[,noquote(names(DT)[2]),with=FALSE] # Not a vector
#   y
#1: 3
#2: 4
is.vector(DT[,noquote(names(DT)[2]),with=FALSE])
#[1] FALSE

data.table은 클래스에서 상속 data.frame합니다. 따라서 list내부적으로 (열 벡터의)이며 그렇게 취급 될 수 있습니다.

is.list(DT)
#[1] TRUE

다행히도 목록 부분 집합, 즉는 [[매우 빠르며, 반면에 [data.table 패키지는 이에 대한 메서드를 정의하지 않습니다. 따라서 단순히 [[인덱스로 추출하는 데 사용할 수 있습니다 .

DT[[2]]
#[1] 3 4

DT[,get(names(DT)[colNb])]

여기서 colNb는 정수 (원하는 열 번호) 또는 열 번호를 포함하는 변수 일 수 있습니다.

참고URL : https://stackoverflow.com/questions/20043313/extract-a-column-from-a-data-table-as-a-vector-by-position

반응형