如何在data.table中使用某些列名的字符向量选择列?[重复]

问题描述 投票:32回答:1

我试图选择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

我刚刚做了一个向量,其中包括 disp, hpwt 并且我使用该向量选择了我的data.frame中相应的列。现在让我们从我的data.frame中制作一个data.table对象,并尝试做同样的操作。

> library(data.table)
> mtcarsDT <- data.table(mtcars)
> mtcarsDT[, myVector]
[1] "disp" "hp"   "wt"  
r data.table
1个回答
57
投票

我们可以使用 .. 记数法 myVector 作为列位置的向量,就像它在 data.frame

mtcarsDT[, ..myVector]

根据 ?data.table

如果在数据集中和父范围内的变量名有重叠,可以使用双点前缀。..cols 明确地引用'cols变量的父作用域,而不是来自你的数据集。

© www.soinside.com 2019 - 2024. All rights reserved.