bou*_*472 28 r data.table
我试图在data.table中选择那些名称出现在我的角色向量中的列.该操作在纯data.frame中工作,但在data.table中不起作用.这是一个可重复的例子.
> names(mtcars)
[1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear"
[11] "carb"
> myVector <- c('disp', 'hp', 'wt')
> head(mtcars[, myVector])
disp hp wt
Mazda RX4 160 110 2.620
Mazda RX4 Wag 160 110 2.875
Datsun 710 108 93 2.320
Hornet 4 Drive 258 110 3.215
Hornet Sportabout 360 175 3.440
Valiant 225 105 3.460
Run Code Online (Sandbox Code Playgroud)
我刚刚制作了一个包含disp
,, hp
和的矢量,并且wt
我使用该矢量在我的data.frame中选择了相应的列.现在让我们从data.frame中创建一个data.table对象,并尝试执行相同的操作.
> library(data.table)
> mtcarsDT <- data.table(mtcars)
> mtcarsDT[, myVector]
[1] "disp" "hp" "wt"
Run Code Online (Sandbox Code Playgroud)
akr*_*run 52
我们可以with=FALSE
用来做同样的操作data.frame
mtcarsDT[, myVector, with=FALSE]
Run Code Online (Sandbox Code Playgroud)
根据 ?data.table
with:默认情况下,'with = TRUE'和'j'在'x'的框架内进行评估; 列名可以用作变量.当'with = FALSE''j'是列名的字符向量或要选择的列位置的数字向量时,返回的值总是'data.table'.'with = FALSE'在'data.table'中通常很有用,可以动态选择列.