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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在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

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

> library(data.table)
> mtcarsDT <- data.table(mtcars)
> mtcarsDT[, myVector]
[1] "disp" "hp"   "wt"  
答案

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

mtcarsDT[, ..myVector]

根据 ?data.table

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

以上是关于如何在data.table中使用某些列名的字符向量选择列?[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用列名列表从数据表中选择匹配的列[重复]。

如何在众多 CSV 中测试某些列名的存在

当列名包含空格和特殊字符时从 data.table 包中读取?

R语言data.table导入数据实战:data.table使用字符向量创建新的数据列

R data.table:如何使用字符串中的名称创建新列?

R data.table:如何使用包含列名的 R 变量?