r - 在 data.table 中的函数内子集行
问题描述
我正在尝试在 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
解决方案
您还可以使用get
来使您的功能正常工作:
dtSubset <- function(df, col, str) {
df[get(col) == str]
}
现在dtSubset(dt, "variable", "data")
将为您提供预期的结果:
id variable 1: 2 data 2: 3 data
推荐阅读
- mariadb - 由于缺少文件 /var/lib/mysql/aria_log_control,MariaDB 无法启动
- python - 不确定如何解释字符串中的最后一个单词
- sql - 如何让这条 SQL 行更高效?(分区依据时的情况)
- javascript - 将变量从 HTML 传递到 JS 回 HTML
- docker - docker-compose 提供 SSL 验证
- python - 使用 .pop() 函数获取用户输入以替换列表中的某个点时出错
- javascript - JQuery - 基于具有相同类的数据属性切换元素
- stata - 从宏到变量的随机彩票号码
- javascript - 将 React 类组件迁移到 Function 组件 (React-google-maps)
- yaml - 带有前导空格的 YAML 字符串