반응형
위치별로 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는 정수 (원하는 열 번호) 또는 열 번호를 포함하는 변수 일 수 있습니다.
반응형
'Programing' 카테고리의 다른 글
웹 사이트 용 메트로 테마 (0) | 2020.11.12 |
---|---|
Base64 인코딩의 실제 목적은 무엇입니까? (0) | 2020.11.12 |
Visual Studio 2013 MSTest와 NUnit (0) | 2020.11.12 |
여러 프로젝트가 node_modules 디렉토리를 공유하도록하려면 어떻게해야합니까? (0) | 2020.11.12 |
C ++ 17, C ++ 14 및 C ++ 11 개체를 연결하는 것이 안전합니까? (0) | 2020.11.12 |