【问题标题】:assigning variable to each output of lapply将变量分配给 lapply 的每个输出
【发布时间】:2015-10-07 18:43:14
【问题描述】:

我正在尝试对我的一组变量使用 lapply,但我希望将输出作为单独的变量。例如。

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

但这给了我一个包含 4 个项目的列表。但我希望这个结果为 x1,x2,x3,x4。 有可能得到这个吗? 抱歉无法解释清楚。

【问题讨论】:

  • 试试list2env(setNames(difference, paste0('x', 1:4)), envir=.GlobalEnv),但最好将它放在list 中,而不是作为全局环境中的单独对象。
  • 非常感谢。解决了我的问题,但是因为我必须将结果导入表格形式,所以我不得不将列表项隐藏在单独的变量中。帮了大忙。

标签: r apply lapply


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    你应该再次评估它:

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

    【讨论】:

      猜你喜欢
      • 2012-12-12
      • 1970-01-01
      • 2018-08-04
      • 2017-09-28
      • 2018-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多