为lapply的每个输出分配变量

时间:2015-10-07 18:43:15

标签: r apply lapply

我正在尝试在我的变量集上使用lapply,但我想将输出作为单独的变量。例如。

df <- list(var1,var2,var3,var4)
di <- function(x) {diff(x)
difference <- lapply(df,di)

但这给了我4个项目的清单。但我希望这个结果为x1,x2,x3,x4。 有可能得到这个吗? 很抱歉没有足够的解释。

2 个答案:

答案 0 :(得分:0)

您使用错误的工具来实现目标。 lapply函数将输出存储在列表中。如akrun所示,您可以将lapply的结果强制转换为单独的4个单独的对象,x1x2x3x4

更适合您目标的工具是for循环。例如,

for(i in seq(1, length(df))){
    n <- paste0("x",i)
    assign(n, diff(df[[i]]))
}

总而言之,你的最终目标有点可疑。我建议您将结果保存在列表或矩阵中,特别是如果您是R的新手。通过将所有结果包含在列表或矩阵中,您可以继续使用lapplysapply等函数操纵你的结果。

答案 1 :(得分:0)

你应该再试一次:

df<- list(var1,var2,var3,var4) 
df[1:4]<-lapply(df[1:4], function(x) diff(x))