用map()函数替换for循环以加快
我创建了一个名为list_ok的列表:用map()函数替换for循环以加快,r,R,我创建了一个名为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 如何使用map函数进行相同的练习?我的问题是知道如何
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
如何使用map函数进行相同的练习?我的问题是知道如何处理map函数中的两个不同索引(i
和k
)
我将在另一个更复杂的练习中使用相同的想法
有什么帮助吗?用
并行软件包来加速lappy
和sapply
怎么样
library(parallel)
numCores <- detectCores()
cl = makeCluster(numCores)
parLapply(list_ok, function(x)
sapply(x, function(y) y), cl = cl)
库(并行)
numCores你会发现这个问答很有用:
对于循环中的循环,最简单的方法是创建一个匿名函数作为map
的第二个参数,并在该匿名函数中再次使用map
(在本例中,我使用的是map\u dbl
)和另一个匿名函数,您可以将一个级别的循环(x)与另一个级别的循环(y)结合起来
我不明白你想干什么<代码>新建列表
和列表_ok
是相同的。为什么要使用for
循环(或使用purrr::map
)创建一个相同的列表副本?这听起来像是个XY问题。你能提供更多的细节吗?这只是一个练习。很简单,我只想用map函数替换for代码。这是做同样事情的另一种方式。我还是不明白new_list@MauritsEvers我的iidea就是要知道如何使用上面for命令中的两个不同索引的map函数。你想得不对。map
的优点是它允许向量化函数,即循环抛出列表的元素,然后在其元素上应用向量化函数。从2个“数组”索引的角度考虑这一点是错误的,因为它不符合map
(或者*apply
)的要求,最终会得到下面所示的复杂解决方案。如果必须使用数组索引,请使用for
循环;只要正确使用,R中的for
循环没有问题!
library(parallel)
numCores <- detectCores()
cl = makeCluster(numCores)
parLapply(list_ok, function(x)
sapply(x, function(y) y), cl = cl)
library(purrr)
map(list_ok, function(x) map_dbl(seq_along(list_ok), function(y) x[[y]]))
[[1]]
[1] 1 2 3 4 5
[[2]]
[1] 6 7 8 9 10
[[3]]
[1] 11 12 13 14 15
[[4]]
[1] 16 17 18 19 20
[[5]]
[1] 21 22 23 24 25