gpt4 book ai didi

在 R 中运行 foreach 而不返回任何值

转载 作者:行者123 更新时间:2023-12-03 16:22:18 26 4
gpt4 key购买 nike

我有一个函数 doSomething(),它在 foreach 循环中运行,因此将一些计算保存为 .csv 文件。因此,我不需要 foreach 的返回值,实际上我不想要返回值,因为它使我的内存困惑到无法运行尽可能多的迭代的程度。

如何强制 foreach 没有返回值,或删除迭代的返回值?

这是一个说明我的问题的最小示例:

cl <- parallel::makePSOCKcluster(1)
doParallel::registerDoParallel(cl)

"%dopar%" <- foreach::"%dopar%"

doSomething <- function () {
a <- as.numeric(1L)
}

foreach::foreach (i = 1:4) %dopar% {

doSomething()

}

输出是:
[[1]]
[1] 1

[[2]]
[1] 1

[[3]]
[1] 1

[[4]]
[1] 1

最佳答案

R 中的并行计算工作(据我所知),因此将为每个集群节点分配内存。

这意味着如果你有一个大数据集,每个节点都需要计算,这个数据将被多次分配。这会导致高 RAM 消耗。由于您想在每个循环中写入输出并在之后丢弃结果,您可以尝试 rm函数并在每个函数调用中调用垃圾收集(例如使用 gc )。

这适用于 E L M如上所述。感谢测试!

关于在 R 中运行 foreach 而不返回任何值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60072041/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com