- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最近,我在工作区创建了一个对象factor=1
,不知道base
包中有一个函数factor
.
我想做的是在并行循环中使用变量factor
,例如,
library(plyr)
library(foreach)
library(doParallel)
workers <- makeCluster(2)
registerDoParallel(workers,cores=2)
factor=1
llply(
as.list(1:2),
function(x) factor*x,
.parallel = TRUE,
.paropts=list(.export=c("factor"))
)
然而,这会导致一个错误,我花了很长时间才理解。看起来,plyr
在其环境 exportEnv
中创建了对象 factor
,但使用 base::factor
而不是用户提供的对象。请参阅以下示例
llply(
as.list(1:2),
function(x) {
function_env=environment();
global_env=parent.env(function_env);
export_env=parent.env(global_env);
list(
function_env=function_env,
global_env=global_env,
export_env=export_env,
objects_in_exportenv=unlist(ls(envir=export_env)),
factor_found_in_envs=find("factor"),
factor_in_exportenv=get("factor",envir=export_env)
)
},
.parallel = TRUE,
.paropts=list(.export=c("factor"))
)
stopCluster(workers)
如果我们检查 llply
的输出,我们会发现行 factor_in_exportenv=get("factor",envir=export_env)
不会返回 1
(对应用户提供的对象)而是base::factor
的函数定义。
问题 1) 我如何理解这种行为?我预计输出为 1
。
问题 2)如果我将新值分配给另一个包中已定义的对象(例如在我的情况下 factor
)?
最佳答案
llply 函数在底层调用“foreach”。 Foreach 使用“parant.frame()”来确定要评估的环境。 llply 中的 parant.frame 是什么?这是 llply 的函数环境,没有定义因子。
为什么不直接使用 foreach 而不是 llply 呢?
library(plyr)
library(foreach)
library(doParallel)
workers <- makeCluster(2)
registerDoParallel(workers,cores=2)
factor=1
foreach(x=1:2) %dopar% {factor*x}
请注意,您甚至不需要 .export 参数,因为在这种情况下它会自动执行此操作。
关于r - 并行 plyr 中的奇怪环境行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17840167/
是否有一种 Eloquent 方法来使用 ddply() 不仅获得定义的最细粒度组的输出,还获得那些子组的输出? 换句话说,当其中一个分类器是“任何”或“任一”或“无关紧要”时。在两个分组变量的简单情
我正在尝试使用 plyr 计算滚动平均值。数据是行业国家年的数据,对每个行业国家都有重复观察。数据不平衡,但大多数工业国家有大约 15 个观测值。 例如数据如下所示: country IS
我想使用 ddply 函数将相同的函数写入多个列,但我尝试将它们写在一行中,想看看有没有更好的方法来做到这一点? 这是数据的简单版本: data<-data.frame(TYPE=as.integer
我将如何使用 plyr 复制此内容? with(mtcars, tapply(mpg, cyl, summary)) 以同样的优雅,即不详细说明个人统计数据? 最佳答案 library(plyr) d
我有以下数据集(CEU): group x y 1 -23 100 1 -0.90 69.62 1 -0.90 72.03 2 -23
我正在尝试学习如何在 R/plyr 中编写函数。我知道有更简单的方法可以完成我在下面展示的内容,但这不是重点。 在下面的示例中,PLYR 不会向我的新数据框返回新变量 library(plyr) hi
我有一个这样的数据框: mat.in=data.frame(site=c('A','A','A','B','B','B'), var=c('product.A','product.B'
作为学习 plyr 的练习,我尝试对 Rob Hyndman 最近发布的一篇文章做一个 plyr 版本: library(forecast); library(plyr) # Hyndman, R.
我想在一个图上绘制多个时间序列。目前我可以单独绘制它们但不能一起绘制。我怎样才能加入数据,因为年份是按小数分割的。 我基本上想要结束的是这个 Plotting multiple time-series
有没有办法将变量的值分配给 plyr 中的结果列名? 所以在这段代码中... column_name column_names df > # temporal variable > for (c
我是 plyr(和 R)的新手,正在寻找一些帮助来开始。以棒球数据集为例,我如何计算联赛和球队(lg 和球队)“击球数”的同比(yoy)变化? library(plyr) df1 <- aggrega
我使用了plyr 包提供的strip_splits(df) 函数来获取数据框列表。我现在想将数据框列表连接在一起,并添加回用于拆分它们的变量。下面突出显示的文档使我相信这应该是可能的,但是我找不到合适
我正在尝试将一个函数 (weight.func) 传递给另一个调用 ddply 的函数(包装器)。我希望 ddply 使用该函数 (weight.func) 作为其计算的一部分。当 weight.fu
我有一个非常大的数据框,我需要在两列上连接到另一个数据框。我一直在使用 merge 来完成 ir,但 R 内存不足,表越大。是否有使用 dplyr 或 plyr 的类似解决方案?我听说他们需要更少的内
我想为某些数据组合生成相同类型的图表。目前,我正在使用 plyr 来拆分数据并为每个组合执行一些代码。 例如,假设 dataframe 包含公司、部门、地区和收入。这是我的伪代码: d_pl
我喜欢 plyr 将数据帧拆分为多个数据集,然后对每个数据集执行相同操作的能力。最好的部分是当它以整洁紧凑且标记良好的表格的形式向您显示结果时。我喜欢使用 each() 将一堆计算放入一行中。但是,我
基本上我想要一个基于我的群组的自动增量 id 列 - 在这种情况下。(高棉语,剪切) > myDataFrame size kmer cvCut cumsum 1
我无法理解 plyr 包的用法。我尝试使用它来拆分存储在列表中的数据帧,应用函数,将结果存储为数据帧并将数据帧再次组合为列表。 因此,鉴于以下数据: #create test dfs
我以为我有一个非常简单的数据帧转换,但出于某种原因我无法理解它似乎需要永恒,这让我怀疑它可能没有按照我的希望进行。任何人都可以解释一下吗? 第 1 部分 - 将源数据转换为单独的列(实际 df 有 2
我遇到了一个非常不同的问题,在 fullscreen我的模式plyrjs没有向 fullscreen 播放视频 我试图重现 问题 中的代码相同密码笔 但它适用于 密码笔 为什么?。 问题:为什么相同的
我是一名优秀的程序员,十分优秀!