我想创建一个空列表,以便我可以将其元素替换为其他列表。
例如
simulations = 10
seeds = sample(10000:99999, simulations, replace=F)
test_function <- function(seedX){
lista = list(seedX=seedX,
dataframe=data.frame(x=runif(10, -5.0, 5.0),y=rnorm(10,mean = 0,sd = 1)))
return(lista)
}
results <- vector("list", simulations)
results[1] = test_function(seedX = seeds[1])
我收到以下错误:
Warning message:
In results[1] = test_function(seedX = seeds[1]) :
number of items to replace is not a multiple of replacement length
我做错了什么?
谢谢!
答案 0 :(得分:9)
只需更改
results[1] = test_function(seedX = seeds[1])
到
results[[1]] <- test_function(seedX = seeds[1])
重要的更改是[...]
列表组件索引运算符的[[...]]
元素索引运算符,因为您需要将列表组件分配给新列表。请参阅https://stat.ethz.ch/R-manual/R-devel/library/base/html/Extract.html。
(您还应该使用<-
赋值运算符而不是=
,主要是为了遵循R约定,还因为=
意味着不同的东西(因此无法使用)对于其他上下文中的赋值),例如函数调用中的命名参数规范,因此使用<-
可以实现更高的一致性。)