测试data.table中是否存在变量

时间:2016-07-10 13:28:44

标签: r data.table

我想在data.table中进行一些计算,列名称可能会有所不同。

library(data.table)
DT1 <- data.table(x=1:10,y=1:10)
DT1[,list(y+x)]

现在,如果我对不包含y列的DT做同样的事情:

DT <- data.table(x=1:10)
DT[,list(y+x)]

我会收到错误。当然我可以在data.table外面进行检查:

if("y" %in% names(DT))DT[,list(y+x)]

我想知道是否有办法用data.table本身来测试它,例如:

DT[exists("y"),y+x]

1 个答案:

答案 0 :(得分:4)

我们可以在if/else

中使用exists条件
DT[, if(exists("y")) y+x else x]

如果我们要测试许多变量,即说'y','z'

nm <- c('y', 'z')
DT[, if(Reduce(`&`, lapply(nm, exists))) y + z + x else x]