我在尝试连接作为 R 中列表列表元素的 data.frames 时遇到了困难。我已经使用 for 循环实现了第一个原始解决方案,但是(当然)随着长度的增加它变得非常慢列表增长。
(更新:我已将元素“消息”添加到每个嵌套列表中)
这里的示例代码:
list1 = list()
list1[[1]] = list(df = data.frame(A = 1 : 10, B = 30 : 21),
message = "first list")
list1[[2]] = list(df = data.frame(A = 11 : 20, B = 20 : 11),
message = "second list")
list1[[3]] = list(df = data.frame(A = 21 : 30, B = 30 : 21),
message = "third list")
dfFinal = data.frame()
for(nIndexList in 1 : length(list1)) {
dfFinal = rbind(dfFinal, list1[[nIndexList]]$df)
} …Run Code Online (Sandbox Code Playgroud) 我对 Spark 很陌生,我试图在网上寻找一些东西,但我没有找到任何令人满意的东西。
我一直使用该命令运行并行计算mclapply,我喜欢它的结构(即,第一个参数用作滚动索引,第二个参数是要并行化的函数,然后是传递给函数的其他可选参数)。现在我试图通过 Spark 做同样的事情,即,我想在 Spark 集群的所有节点之间分配我的计算。这就是我所学到的以及我认为应该如何构建代码的内容(我正在使用包sparklyr):
spark_connect;copy_to并通过它的tibble访问它;mclapply,但我已经看到有在包(我已经看到了存在的功能没有类似功能spark.lapply的SparkR包,但不幸的是它是不是在CRAN了)。下面是我实现的一个简单的测试脚本,它使用函数mclapply.
#### Standard code that works with mclapply #########
dfTest = data.frame(X = rep(1, 10000), Y = rep(2, 10000))
.testFunc = function(X = 1, df, str) {
rowSelected = df[X, ]
y = as.numeric(rowSelected[1] + rowSelected[2])
return(list(y = y, str = str))
}
lOutput = mclapply(X = 1 …Run Code Online (Sandbox Code Playgroud)