【发布时间】:2017-04-05 20:34:56
【问题描述】:
我是 R 新手,我已经在 google 上搜索了以下问题的解决方案。
我有
DT = data.table(y=c("a",NA,NA), y_1=c(NA,3,6), y_2=c(1,NA,3), y_3=c(1,1,1)).
我想创建一个函数来传递数据表和需要更改的列。
fun <- function(dt, var)
{
dt[,(var) := ifelse(!(is.na(get(var))), get(paste0(var,"1")),
ifelse(!(is.na(get(paste0(var,"1")), get(paste0(var,"2")...))]
return(dt)
}
我想用y_1 中的值替换y 变量中的值,这些值是NA,如果它们不是NULL,或者替换为y_2 等等。像这样,我想创建一个可以接受不同变量但具有相同结尾的函数。
更新:Uwe,感谢您指出上一个问题。我发现它非常有用。但是,我的要求略有不同。我需要对其他变量以及值为 NA 的变量进行相同的更新。例如,我需要对 (x,x_1,x_2,x_3...),(z,z_1,z_2,z_3..) 和除 y 之外的一些其他变量执行此操作。有没有办法使用 lapply 或函数来做到这一点。
提前致谢。
【问题讨论】:
-
您在问题中遗漏了一个重要部分,即如何使用您定义的
DT调用fun函数。 -
我想传递数据表和我想用它替换它的 NA 值的变量。就像 fun(DT,"y")
-
这是同一个问题(忽略对 grep 列名的希望):stackoverflow.com/q/37776942 Alexis 的回答可能在这两者中更有效,fwiw。
标签: r data.table