如何解决使用 forerach 进行并行计算的意外结果
我想在循环中每 5 次迭代后打印一条消息。这在基本 R 循环中工作,如下所示:
vec = c() # empty vector
for (i in 1:100) {
s = sqrt(i)
vec = c(vec,s)
if (i %% 5 == 0) {
print(paste0("Iteration number: ",i," finished running"))
}
}
我希望能够使用 forerach
的并行计算来做同样的事情。到目前为止,我已经完成了以下工作:
vec = c() # empty vector
library(doParallel); library(foreach)
ncores = detectCores() # number of cores in my computer
registerDoParallel(ncores)
foreach (i = 1:100) %dopar% {
s = sqrt(i)
vec = c(vec," finished running"))
}
}
stopImplicitCluster()
然而,它并没有按照我想要的方式工作。出于某种原因,它还以“类似列表”的格式打印 NULL
。如何从 forerach
方法中的基本 R 循环获得相同的结果?
解决方法
如果严格不需要打印在每个 5 的倍数上的消息,以下将创建两个相同的向量。
请注意,我事先创建了 from addict import Dict
mapping = Dict()
mapping.a.b.c.d.e = 2
print(mapping) # {'a': {'b': {'c': {'d': {'e': 2}}}}}
,并在循环中使用了 SELECT em.asin,em.category
FROM
`my_proj.amazon_data.electronics_meta` as em
WHERE
exists ( select *
from unnest(category) as sub_cat
where sub_cat IN ('Television & Video','Televisions','Television & Video')
)
and not exists ( select *
from unnest(category) as sub_cat
where sub_cat IN (
'DVD Players & Recorders','Projection Screens','VCRs','Blu-ray Players','Blu-ray Players & Recorders'
)
)
。
vec
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。