r - 使用嵌套的 foreach 循环创建数据框列表
问题描述
这是我的代码:
library(foreach)
foreach (i = 1:5, .combine = 'list') %:%
foreach (j = 1:10, .combine = 'rbind') %do% {
cbind(round(rnorm(1),4), paste(i, j, sep = '.'), LETTERS[i+j])
}
我想看到的是一个包含五个元素的列表,其中每个元素都是由内部循环创建的 10 行数据框。
[[1]] 数据帧 #1
[[2]] 数据帧 #2
[[3]] 数据帧 #3
等等
相反,输出是一个包含两个元素的嵌套列表,如下所示:
[[1]] 2 元素列表
[[1]] [[1]] 2 元素列表
[[1]] [[1]] [[1]] 2 元素列表
[[1]] [[1]] [[1]] [[1]] 数据帧 #1
[[1]] [[1]] [[1]] [[2]] 数据帧 #2
[[1]] [[1]] [[2]] 数据帧 #3
[[1]] [[2]] 数据帧 #4
[[2]] 数据帧 #5
如何让 foreach 循环正确附加?
解决方案
尝试:
library(foreach)
foreach (i = 1:5) %do% {
foreach (j = 1:10, .combine = 'rbind') %do%
cbind(round(rnorm(1),4), paste(i, j, sep = '.'), LETTERS[i+j])
}
#> [[1]]
#> [,1] [,2] [,3]
#> [1,] "-1.7924" "1.1" "B"
#> [2,] "0.822" "1.2" "C"
#> [3,] "0.2779" "1.3" "D"
#> [4,] "2.0711" "1.4" "E"
#> [5,] "1.2373" "1.5" "F"
#> [6,] "-0.8168" "1.6" "G"
#> [7,] "0.0823" "1.7" "H"
#> [8,] "-1.6213" "1.8" "I"
#> [9,] "-0.7107" "1.9" "J"
#> [10,] "-1.9076" "1.10" "K"
#>
#> [[2]]
#> [,1] [,2] [,3]
#> [1,] "0.5223" "2.1" "C"
#> [2,] "0.3647" "2.2" "D"
#> [3,] "-1.0026" "2.3" "E"
#> [4,] "2.0969" "2.4" "F"
#> [5,] "-1.2028" "2.5" "G"
#> [6,] "-0.9095" "2.6" "H"
#> [7,] "1.543" "2.7" "I"
#> [8,] "-0.3364" "2.8" "J"
#> [9,] "0.9423" "2.9" "K"
#> [10,] "0.5551" "2.10" "L"
#>
#> [[3]]
#> [,1] [,2] [,3]
#> [1,] "-1.4515" "3.1" "D"
#> [2,] "-1.9702" "3.2" "E"
#> [3,] "0.458" "3.3" "F"
#> [4,] "1.7234" "3.4" "G"
#> [5,] "0.3744" "3.5" "H"
#> [6,] "-1.2371" "3.6" "I"
#> [7,] "-0.1577" "3.7" "J"
#> [8,] "1.2072" "3.8" "K"
#> [9,] "-0.1143" "3.9" "L"
#> [10,] "-1.6081" "3.10" "M"
#>
#> [[4]]
#> [,1] [,2] [,3]
#> [1,] "-1.0778" "4.1" "E"
#> [2,] "1.2267" "4.2" "F"
#> [3,] "0.2161" "4.3" "G"
#> [4,] "-0.3156" "4.4" "H"
#> [5,] "-0.0215" "4.5" "I"
#> [6,] "0.5515" "4.6" "J"
#> [7,] "1.2866" "4.7" "K"
#> [8,] "-0.774" "4.8" "L"
#> [9,] "-0.9134" "4.9" "M"
#> [10,] "0.315" "4.10" "N"
#>
#> [[5]]
#> [,1] [,2] [,3]
#> [1,] "0.3514" "5.1" "F"
#> [2,] "1.2512" "5.2" "G"
#> [3,] "0.7572" "5.3" "H"
#> [4,] "-0.9727" "5.4" "I"
#> [5,] "-0.3072" "5.5" "J"
#> [6,] "0.3907" "5.6" "K"
#> [7,] "-0.5655" "5.7" "L"
#> [8,] "-0.8005" "5.8" "M"
#> [9,] "-0.6386" "5.9" "N"
#> [10,] "0.0811" "5.10" "O"
由reprex 包(v0.3.0)于 2020 年 9 月 21 日创建
推荐阅读
- java - 如何在android studio camera2中找到相机百万像素
- php - PHP 脚本在一台服务器上运行但不在另一台服务器上运行 - 相同的 PHP 版本
- mfc - 如何设置 id 菜单?
- ruby-on-rails - 从bash将时间戳传递给psql
- c# - StringComparison.OrdinalIgnoreCase 在 CreateDocumentQuery().Where() 中无法用于 CosmosDB 查询
- java - 使用 json 节点解析 JSON 字符串
- c++ - std::rethrow(std::exception_ptr) 不工作
- git - 如何使用 git 从 master 分支中提取?
- scala - ubuntu scala ide - spark - toDF 方法错误值 toDF 不是 org.apache.spark.rdd.RDD [String] 的成员
- php - Woocommerce 购物车总数不考虑运费变化