我想编写一个函数,从数据表中选择动态命名列的特定范围内的行。尝试编写此内容时,我发现自己无法通过将条件应用于动态确定的列来进行行选择。这是我的例子:
这工作正常:
library(data.table)
dt = data.table(weight=seq(150, 250, 10))
dt[weight < 200]
就像这样:
x = 200
dt[weight < x]
但这不起作用
name = weight
limit = 200
dt[eval(name) < limit]
我的解决方法是什么?
最佳答案
你需要两件事:
name
应该是一个字符串,如 "weight"
。 eval(parse(text=name))
,而不仅仅是 eval(name)
。 例如,使用一些假数据:
library(data.table)
dt <- data.table(weight=seq(150,250,10))
name <- "weight"
limit <- 200
dt[eval(parse(text=name)) < limit]
# weight
# 1: 150
# 2: 160
# 3: 170
# 4: 180
# 5: 190
关于r - 如何使用动态确定的列名和截止限制选择data.table中的行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33312777/