Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.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
将元素指定给嵌套purrr映射中的列表_R_Nested Loops_Purrr - Fatal编程技术网

将元素指定给嵌套purrr映射中的列表

将元素指定给嵌套purrr映射中的列表,r,nested-loops,purrr,R,Nested Loops,Purrr,我试图在nest Purr::map调用中将元素分配给列表——这基本上应该与嵌套for循环相同: res <- list() for (i in 1:4) { for (j in letters[1:3]) { res[[paste(i,j)]] <- paste(i,j) } } str(res) #> List of 12 #> $ 1 a: chr "1 a" #> $ 1 b: chr "1 b" #> $ 1 c: chr "

我试图在nest Purr::map调用中将元素分配给列表——这基本上应该与嵌套for循环相同:

res <- list()
for (i in 1:4) {
  for (j in letters[1:3]) {
    res[[paste(i,j)]] <- paste(i,j)
  }
}

str(res)
#> List of 12
#>  $ 1 a: chr "1 a"
#>  $ 1 b: chr "1 b"
#>  $ 1 c: chr "1 c"
#>  $ 2 a: chr "2 a"
#>  $ 2 b: chr "2 b"
#>  $ 2 c: chr "2 c"
#>  $ 3 a: chr "3 a"
#>  $ 3 b: chr "3 b"
#>  $ 3 c: chr "3 c"
#>  $ 4 a: chr "4 a"
#>  $ 4 b: chr "4 b"
#>  $ 4 c: chr "4 c"

使用
walk
运行相同的代码将返回相同的空
res\u purr
对象。

使用您的代码,我们可以简单地添加
res\u purr使用您的代码,我们可以简单地添加
res\u purr我将执行以下操作:

library(purrr)
res_purrr <- expand.grid(1:4,letters[1:3],stringsAsFactors = FALSE) %>%
  pmap(paste) %>%
  set_names()
str(res_purrr)
# List of 12
# $ 1 a: chr "1 a"
# $ 2 a: chr "2 a"
# $ 3 a: chr "3 a"
# $ 4 a: chr "4 a"
# $ 1 b: chr "1 b"
# $ 2 b: chr "2 b"
# $ 3 b: chr "3 b"
# $ 4 b: chr "4 b"
# $ 1 c: chr "1 c"
# $ 2 c: chr "2 c"
# $ 3 c: chr "3 c"
# $ 4 c: chr "4 c"
库(purrr)
res_purrr%
pmap(粘贴)%>%
set_names()
str(res_purrr)
#12人名单
#$1 a:chr“1 a”
#$2 a:chr“2 a”
#$3 a:chr“3 a”
#$4 a:chr“4 a”
#100亿美元:chr“100亿”
#200亿美元:chr“200亿”
#300亿美元:chr“300亿”
#400亿美元:chr“400亿”
#$1 c:chr“1 c”
#$2 c:chr“2 c”
#$3 c:chr“3 c”
#$4 c:chr“4 c”

这个问题是相关的:

我会做以下事情:

library(purrr)
res_purrr <- expand.grid(1:4,letters[1:3],stringsAsFactors = FALSE) %>%
  pmap(paste) %>%
  set_names()
str(res_purrr)
# List of 12
# $ 1 a: chr "1 a"
# $ 2 a: chr "2 a"
# $ 3 a: chr "3 a"
# $ 4 a: chr "4 a"
# $ 1 b: chr "1 b"
# $ 2 b: chr "2 b"
# $ 3 b: chr "3 b"
# $ 4 b: chr "4 b"
# $ 1 c: chr "1 c"
# $ 2 c: chr "2 c"
# $ 3 c: chr "3 c"
# $ 4 c: chr "4 c"
库(purrr)
res_purrr%
pmap(粘贴)%>%
set_names()
str(res_purrr)
#12人名单
#$1 a:chr“1 a”
#$2 a:chr“2 a”
#$3 a:chr“3 a”
#$4 a:chr“4 a”
#100亿美元:chr“100亿”
#200亿美元:chr“200亿”
#300亿美元:chr“300亿”
#400亿美元:chr“400亿”
#$1 c:chr“1 c”
#$2 c:chr“2 c”
#$3 c:chr“3 c”
#$4 c:chr“4 c”


这个问题是相关的:

您需要将结果分配回
res\u purr
以替换它。如果你想更新
res\u purr
,你可以使用
其他人已经正确指出分配结果失败的地方,但更广泛地说,你在函数编程工具上使用
for
循环逻辑,这在很多情况下不会给你想要的结果。例如,您实际上并没有获得所需的列表元素名称。您不会使用像
map
这样的工具来指定“循环”中的外部对象。另外,您得到的是一个嵌套列表,而不是一个12人的列表。@avid_useR我正在尝试完成与原始海报相同的任务。您能否澄清如何将结果分配回原始列表(res_purrr),而不是使用不推荐的@user42485。接受的答案将是OP问题的解决方案。如果它没有回答您的问题,我会搜索它或问您自己的问题(确保没有人问过)。您需要将结果分配回
res\u purr
以替换它。如果你想更新
res\u purr
,你可以使用
其他人已经正确指出分配结果失败的地方,但更广泛地说,你在函数编程工具上使用
for
循环逻辑,这在很多情况下不会给你想要的结果。例如,您实际上并没有获得所需的列表元素名称。您不会使用像
map
这样的工具来指定“循环”中的外部对象。另外,您得到的是一个嵌套列表,而不是一个12人的列表。@avid_useR我正在尝试完成与原始海报相同的任务。您能否澄清如何将结果分配回原始列表(res_purrr),而不是使用不推荐的@user42485。接受的答案将是OP问题的解决方案。如果它没有回答你的问题,我会搜索它或者问你自己的问题(确保没有人问过)。这是不一样的output@Moody_Mudskipper与
res
不同,对吗?我想问题是结果没有被存储。是的,据我所知,OP想要没有用于loopsit的res,这是不一样的output@Moody_Mudskipper与
res
不同,对吗?我想问题是结果没有被存储。是的,据我所知,OP想要res而不是loopsI,就像这样——奇怪的是,如果函数(
paste
)和/或赋值更复杂,你能想到任何最重要的潜在缺点吗?你可以使用公式符号,这样行就可以变成
pmap(~paste>)(sqrt(…1),“foo”,toupper(…2))
或任何函数代替粘贴谢谢。我可以发布另一个问题,但您可能更容易修改这个答案——如果我们使用
pmap(~paste(sqrt(…1),“foo”,toupper(…2)))
,是否有可能让
设置\u名称
引用回原始网格?也就是说,第一个结果的名称将是
1 a
而不是
1 foo a
。一切都是可能的,我明天将编辑我的答案:)我喜欢这样——好奇,如果函数(
粘贴
),你能想到任何最重要的潜在缺点吗和/或赋值更复杂?您可以使用公式表示法,这样行可以变成
pmap(~paste(sqrt(…1),“foo”,toupper(…2))
或任何函数而不是paste。我可以发布另一个问题,但对你来说修改这个答案可能更容易——如果我们使用
pmap(~paste(sqrt(..1),“foo”,toupper(..2))
,是否可以让
设置名称
引用回原始网格?也就是说,第一个结果的名称将是
1a
而不是
1fooa
。一切都有可能,我明天将编辑我的答案:)
x <- do.call(paste, expand.grid(1:3, letters[1:4], stringsAsFactors = FALSE))
res <- setNames(as.list(x), x)
str(res)  
# List of 12
# $ 1 a: chr "1 a"
# $ 2 a: chr "2 a"
# ...
x <- do.call(function (Var1,Var2) paste(sqrt(Var1),toupper(Var2)), 
             expand.grid(1:4, letters[1:3], stringsAsFactors = FALSE))
res <- setNames(as.list(x), x)
str(res) 
# List of 12
# $ 1 A               : chr "1 A"
# $ 1.4142135623731 A : chr "1.4142135623731 A"
# $ 1.73205080756888 A: chr "1.73205080756888 A"
# $ 2 A               : chr "2 A"
# ...
library(purrr)
res_purrr <- expand.grid(1:4,letters[1:3],stringsAsFactors = FALSE) %>%
  pmap(paste) %>%
  set_names()
str(res_purrr)
# List of 12
# $ 1 a: chr "1 a"
# $ 2 a: chr "2 a"
# $ 3 a: chr "3 a"
# $ 4 a: chr "4 a"
# $ 1 b: chr "1 b"
# $ 2 b: chr "2 b"
# $ 3 b: chr "3 b"
# $ 4 b: chr "4 b"
# $ 1 c: chr "1 c"
# $ 2 c: chr "2 c"
# $ 3 c: chr "3 c"
# $ 4 c: chr "4 c"