如何将lapply的输出保存(分配)到R中的各个变量?

时间:2015-06-30 13:07:11

标签: r loops save lapply assign

我有一个非常简单的问题,但我已经存货了! 我有一个列表作为输出:

作为一个例子:

lapply(1:40, function(x){ (1+x)})

输出:

[[1]]
[1] 2

[[2]]
[1] 3

[[3]]
[1] 4

,直到

[[40]]
[1] 41

我想知道如何通过循环将此列表的每个输出分配给一个新变量? 像这样的东西

a<- [[2]]; b <- [[3]]; ... az <- [[40]]等等。

提前致谢,

2 个答案:

答案 0 :(得分:1)

以下是我的解决方案,它要求lapply的输出以名称ll存储,但我认为可以轻松修改。

ll <- lapply(1:40, function(x){ (1+x)})
nam <- "list_output_"
val <- c(1:length(ll))
for(i in 1:length(val)){
    assign(
        paste(nam, val, sep = "")[i], ll[[i]]
        ) }

输出将为list_output_1,依此类推。

答案 1 :(得分:0)

I created a vector for the names and used a short loop. Maybe someone can vectorize it.

var_names <- c(letters, paste0(letters[1],letters[1:13]))
for(i in seq_along(var_names)) {
  assign(var_names[i], lapply(1:40, function(x){ (1+x)})[[i+1]])}

a
[1] 3
b
[1] 4
am
[1] 41