如何在列表中存储数据 - R

时间:2017-08-04 10:18:37

标签: r

我希望有人可以在这里提供帮助。

我使用R而我已达到需要存储函数返回数据的情况,数据采用向量形式。例如,函数可能会返回:

c(1,2,3,4,5)

假设我有一个我之前创建过的列表:

#I have to store 10 values
alpha = list(rep(NA, 10))

如何将返回的矢量存储在列表中?例如,类似于:

alpha[1] = c(1,2,3,4,5)

那么:

alpha = (c(1,2,3,4,5), NA, NA, NA, NA, NA, NA, NA, NA, NA)

任何帮助将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:1)

看起来你可能有一些关于列表的知识。它们是R中的强大功能(more readingapply系列(lapplymapply等)通常可以帮助您避免这种行为。但要回答你的问题:

alpha <- as.list(rep(NA, 10))

alpha[[1]] <- c(1, 2, 3, 4, 5)

print(alpha)
#> [[1]]
#> [1] 1 2 3 4 5
#> 
#> [[2]]
#> [1] NA
#> 
#> [[3]]
#> [1] NA
#> 
#> [[4]]
#> [1] NA
#> 
#> [[5]]
#> [1] NA
#> 
#> [[6]]
#> [1] NA
#> 
#> [[7]]
#> [1] NA
#> 
#> [[8]]
#> [1] NA
#> 
#> [[9]]
#> [1] NA
#> 
#> [[10]]
#> [1] NA

使用lapply的简单示例:

myfunc <- function(input) {
  return(input + 10)
}

lapply(1:10, myfunc)
#> [[1]]
#> [1] 11
#> 
#> [[2]]
#> [1] 12
#> 
#> [[3]]
#> [1] 13
#> 
#> [[4]]
#> [1] 14
#> 
#> [[5]]
#> [1] 15
#> 
#> [[6]]
#> [1] 16
#> 
#> [[7]]
#> [1] 17
#> 
#> [[8]]
#> [1] 18
#> 
#> [[9]]
#> [1] 19
#> 
#> [[10]]
#> [1] 20

此外,知道[运算符在[[运算符返回列表元素时返回列表会很有帮助。 (同样适用于替换)

要回答您的后续问题:list尝试定义列表(例如list(obj,obj2,obj3)),而as.list尝试将对象转换为列表。由于rep()创建了一个向量,list(rep())会为您提供一个长度为一的列表(在第一个元素中输出rep())。当您希望将矢量显示为列表时,as.list是可行的方法。