我创建一个名为list_ok的列表:
list_ok <- list()
a=c(1,2,3,4,5)
b=c(6,7,8,9,10)
c=c(11,12,13,14,15)
d=c(16, 17, 18, 19, 20)
e=c(21,22,23,24,25)
list_ok[[1]]=a
list_ok[[2]]=b
list_ok[[3]]=c
list_ok[[4]]=d
list_ok[[5]]=e
下面的代码使用for loop
创建相同的list_ok:
new_list <- vector(mode = "list", length=5)
for (i in 1:5) {
for(k in 1:5) {
new_list[[i]][k] <- list_ok[[i]][k]
}
}
> new_list
如何使用地图功能进行相同的练习?我的问题是知道如何处理map函数中的两个不同索引(i
和k
)。
我将在另一个更复杂的练习中使用相同的想法。
有帮助吗?
答案 0 :(得分:2)
您会发现此问答非常有用:purrr map equivalent of nested for loop
对于循环中的循环,最简单的方法是创建一个匿名函数作为map
的第二个参数,并在该匿名函数中再次使用map
(在这种情况下,我使用的是{{1 }})的另一个匿名函数,您可以在其中将一个循环(x)与另一个循环(y)组合在一起。
map_dbl
答案 1 :(得分:1)
使用lapply
软件包的sapply
和parallel
怎么样?
library(parallel)
numCores <- detectCores()
cl = makeCluster(numCores)
parLapply(list_ok, function(x)
sapply(x, function(y) y), cl = cl)