gpt4 book ai didi

r - 如何在函数中使用 char 变量来过滤 data.table 中的列?

转载 作者:行者123 更新时间:2023-12-04 11:27:10 26 4
gpt4 key购买 nike

我应该如何使用 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)

最佳答案

我们可以在.SDcols中指定colname或者可以eval转换为symbol后进行运算

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

关于r - 如何在函数中使用 char 变量来过滤 data.table 中的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59096176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com