【发布时间】:2016-07-10 13:28:43
【问题描述】:
我想在 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]
【问题讨论】:
-
DT[, if(exists("y"))y+x else x]怎么样 -
@akrun 谢谢。为什么不!如果我没有更好的解决方案,我会接受它。
ifelse的问题,我有很多变量要测试,这将生成许多嵌套的ifelse。 -
如果你不想要错误,你想要什么?
-
@Frank 好问题。也许什么都不做,因为没有满足条件的行。但也许我问了很多。
-
我猜你可以使用
try(DT[, list(y+x)], silent = TRUE)。我不做这么严肃的编程,所以我自己从来不需要它。省略该错误可能会让我感到困惑。
标签: r data.table