【发布时间】:2019-08-19 06:12:08
【问题描述】:
我正在尝试在 R 函数中以编程方式对 data.table 的行进行子集化。以下按预期工作:
dt <- data.table(id = 1:5, variable = c("test","data","data", "is", "fun"))
dt[variable == "data"]
id variable
1: 2 data
2: 3 data
如果我定义函数:
dtSubset <- function(df, col, str) {
df[col == str]
}
dtSubset(df, "variable", "data")
我得到一个 0 行表。
以下作品:
dtSubset <- function(df, str) {
dt[variable == str]
}
dtSubset(df, "data")
所以问题在于选择函数内的列。
我尝试了 eval、substitute、quote 和 deparse 的组合,引用和取消引用要传入的列名,每一个都无济于事。我也尝试了subset,但遇到了同样的问题。
小插曲在j 中描述了如何做到这一点,但在i 中没有。不知道我是否遗漏了一些明显的东西,或者我只是想错了,但是我应该怎么做呢?
【问题讨论】:
标签: r data.table