【发布时间】:2020-08-15 18:56:00
【问题描述】:
我有一个看起来像这样的数据表,我想对其应用函数f
library(data.table)
dt <- data.table(id= c(1,1,1,2,2,2,3,3,3), year=c(1,2,3,1,2,3,1,2,3),y = rnorm(9), x1 = rnorm(9), x2 = c(0,0,0,0,1,0,1,1,1),c2 = rnorm(9))
f <- function(data, var1, var2){
data[,(paste("times",var1,var2, sep = "_")) := get(var1)*get(var2)]
}
我想将f 应用于多个变量,以获得类似于以下结果的结果:
vars<-c("x1","x2","c2")
dt2<-lapply(vars, function(x) f(dt,"y", x))
dt2<-do.call(rbind,dt2)
我想使用 for 循环 而不是 lapply 来获得相同的结果,不幸的是,我不擅长循环。有人可以帮我吗?
到目前为止,我尝试了以下方法,但它无法正常工作。
for(i in vars) {
dt<-f(dt,"y",i)
}
非常感谢您的帮助
【问题讨论】:
-
当您没有可重现的错误示例时,很难提供帮助
-
是的,我完全理解,不幸的是,我不确定
lapply方法出了什么问题,因为它适用于其他数据。这就是为什么我正在寻找一种使用 for 循环的不同方法的原因。任何可以使用 for 循环在示例的 dt2 中重现结果的答案都可以。我将更新问题以使其更清楚
标签: r function loops data.table