我希望有人可以在这里提供帮助。
我使用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)
任何帮助将不胜感激,谢谢。
答案 0 :(得分:1)
看起来你可能有一些关于列表的知识。它们是R中的强大功能(more reading)apply
系列(lapply
和mapply
等)通常可以帮助您避免这种行为。但要回答你的问题:
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
是可行的方法。