填充列表的元素而不循环

Sav*_*SUS 3 for-loop r list vectorization

我试图不使用for循环将值分配给列表的元素.

在这里,我创建一个空列表,给它一个20的长度并命名20个元素中的每一个.

mylist <- list()
length(mylist) <- 20
names(mylist) <- paste0("element", 1:20, sep = "")
Run Code Online (Sandbox Code Playgroud)

我希望每个元素都mylist包含从随机生成的数字池中提取的样本,表示为x:

x <- runif(100, 0, 1)
Run Code Online (Sandbox Code Playgroud)

我尝试了以下代码,但没有达到预期的结果:

mylist[[]] <- sample(x = x, size = 20, replace = TRUE) # Gives an error
mylist[[1:length(mylist)]] <- sample(x = x, size = 20, replace = TRUE) # Does not give the desired result
mylist[1:length(mylist)] <- sample(x = x, size = 20, replace = TRUE) # Gives the same undesired result as the previous line of code
mylist[] <- sample(x = x, size = 20, replace = TRUE) # Gives the same undesired result as the previous line of code
Run Code Online (Sandbox Code Playgroud)

PS如上所述,期望的结果是20个元素的列表,其分别包含20个数值.我可以使用for循环来完成它,但我希望成为一个更好的R用户并尽可能使用矢量化操作.

谢谢您的帮助.

Jil*_*ina 5

也许replicate就是你要找的东西.

mylist <- replicate(20, sample(x = x, size = 20, replace = TRUE), simplify=FALSE)
names(mylist) <- paste0("element", 1:20, sep = "")
Run Code Online (Sandbox Code Playgroud)

请注意,无需先创建列表,replicate将为您执行此操作.