我希望通过类或常见模式匹配等标准来处理列grep
.
我的第一次尝试没有成功:
require(data.table)
test.table <- data.table(a=1:10,ab=1:10,b=101:110)
##this does not work and hangs on my machine
test.table[,lapply(names(test.table)[grep("a",names(test.table))], get)]
里卡多·萨波塔 https://stackoverflow.com/users/1492421/ricardo-saporta 答案中的注释 https://stackoverflow.com/questions/15790743/data-table-meta-programming/15791747#15791747你可以使用这个构造,但你必须包装get
在虚拟函数中:
##this works
test.table[,lapply(names(test.table)[grep("a",names(test.table))], function(x) get(x))]
为什么需要匿名函数?
(首选/更清洁的方法是通过.SDcols
:)
test.table[,.SD,.SDcols=grep("a",names(test.table))]
test.table[, grep("a", names(test.table), with = FALSE]