目前我正在努力解决 R 数据表中的 get 函数。特别是,我正在尝试 conTMLE 功能here:
每当我运行此函数时,R 都会返回如下错误消息: “get(paste0("int.A", k)) 中的错误:第一个参数的长度 > 1”。 我发现是这里造成的
dt[, (paste0("W", k+1)):=(get(paste0("int.A", k)))/(get(paste0("fit.A", k)))]
这里k是一个循环,我尝试了一些方法,比如添加as.character。我还尝试在每个循环中定义 j = k,但它导致了更多问题,例如“ eval(jsub, SDenv,parent.frame()) : object 'j' not find”。
目前,我正在考虑在字符串前面添加 .. 。但是,我尝试将“(get(..paste0(“int.A”,k)))”作为“(get(paste0(“..”,“int.A”,k)))”。它们都不起作用。
我想知道如何解决这个问题!预先感谢!!!!
正如 @r2evans 指出的,您需要提供一个可重现的示例。下面的代码显示您的问题不可重现,因为您的代码行表面上有效。因此,正如@MichaelChirico 指出的那样,问题出在其他地方。
library(data.table)
dt <- data.table(int.A1 = c(50,60), int.A2 = c(120,8), fit.A1 = c(1,3), fit.A2 = c(2,4))
for (k in 1:2) {
dt[, (paste0("W", k+1)):=(get(paste0("int.A", k)))/(get(paste0("fit.A", k)))]
}
dt
> dt
int.A1 int.A2 fit.A1 fit.A2 W2 W3
<num> <num> <num> <num> <num> <num>
1: 50 120 1 2 50 60
2: 60 8 3 4 20 2