Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用map()函数替换for循环以加快_R - Fatal编程技术网

用map()函数替换for循环以加快

用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_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