r - 如何在函数中使用 char 变量来过滤 data.table 中的列?
问题描述
我应该如何使用 char 变量来过滤书面函数中的选定列?
library("data.table")
data = data.table(val = c(NA, 1, 2, 3, 4, 5))
dataFun = function(dt, number) {
colname = paste0("value_", number)
dt = dt[, (colname) := val + number]
# the lines below do not work
dt[is.na(colname), colname] = 0
dt[colname < 3, colname] = 3
dt[colname > 5, colname] = 5
return(dt)
}
data = dataFun(data, 1)
解决方案
我们可以在转换为符号后指定colname
in.SDcols
或 can uateeval
dataFun <- function(dt, number) {
colname <- paste0("value_", number)
dt <- dt[, (colname) := val + number]
colnm <- as.name(colname)
dt[is.na(eval(colnm)), (colname) := 0
][eval(colnm) < 3, (colname) := 3
][eval(colnm) > 5, (colname) := 5][]
}
dataFun(data, 1)
# val value_1
#1: NA 3
#2: 1 3
#3: 2 3
#4: 3 4
#5: 4 5
#6: 5 5
推荐阅读
- matplotlib - Matplotlib 生成的 PDF 中的绝对文本位置(用于文本的 figimage?)
- html - XPath:从最近的父节点中查找节点
- android - 为什么在 MaterialCardView 中设置 shapeAppearanceModel 会停止子剪辑?
- linux - 从 zip 文件中提取 200 行第一行并将此文件创建到不同的文件夹中
- git - 如何通过 git diff 命令仅获取已删除的行?
- c# - PDF 未下载 MVC dotnet core 3.1“无法下载”错误
- javascript - Navigator 中的“共享链接”在 Messenger 上不起作用
- c# - 在 docker 容器 C# App 之外连接被拒绝
- powershell - 带有 7zip 输出的 Powershell 调用命令
- python-3.x - 运行“make html”后,Sphinx Docs 不呈现样式/CSS