【发布时间】:2019-07-11 09:08:29
【问题描述】:
我有一个涉及两个循环的函数,结果是两个数据列表。
结构
function (){
for (i in 1:50){
for (j in 1:100){
"Do something"
"get results a and b"
a list
b list
}
"use the series of a and b calculate two parameter A and B"
"put A and B into their list"
list A = append(list A, A)
'or'list B = cbind(list B, B) # I don't know which one is better
}
plot the figure using list A and B
"saving the results"
dataframe = df(listA, listB)
dataframe to csv
}
代码需要模拟5000次,每一步至少需要1分钟:
- 我想使用并行编程来运行整个函数;我试过
lapply,但它只适用于一个循环,如果我这样做,结果不一致,情节无法工作,即我无法得到结果;
我发现一些并行代码不能在 Windows 上运行,有些不能在 Mac 上运行,我对这些感到困惑......
循环中的每个步骤都是独立的,因此我认为另一种方法是将工作分开以同时执行它们,但我需要不断得到结果(按照它们应该的顺序)。
- 要在进一步的绘图要求中使用数据,我需要保存结果,我觉得这个(上)和并行的有问题;
我保存结果的方式看起来一团糟。 比如我想要的是:
A B
0 0
0.1 1
1.2 4
3 9
6 12
... ...
但我得到的是:
V1
0 0 0.1 1 1.2 4 3 9 6 12 ... ...
我不知道如何保存并行编程中的两列数据。
【问题讨论】:
-
用你的向量在最后你可以
matrix(V1, ncol = 2, byrow = TRUE)得到一个2列矩阵。 -
嗨,V1 到底是什么意思,因为我没有将任何人命名为 V1,如果这是矢量的默认名称,在哪里更改它?
-
最后一个输出。将它保存到变量
var_whatever中,并把它放在我之前评论中的V1 的位置。
标签: r foreach parallel-processing