没有找到对象错误 ddply 在功能内
它真的挑战了我调试代码的能力。 R.
我想使用
例如,将相同的函数应用于不同列的不同列,例如 a, b, c. 为此,我打算重复列的名称作为字符串并使用
, 允许函数引用它。 我从另一个答案中抓住了这种技术。
它良好工作,直到我放置
在另一个功能内。 这是一个示例代码:
有任何想法吗? NewColName 甚至在功能内定义!
我认为这个问题的答案,
https://coderoad.ru/5873922/
, 它可以帮助我,但今天我已经遭受了足够的痛苦,现在是时候养手并寻求帮助。
我想使用
ddply//
例如,将相同的函数应用于不同列的不同列,例如 a, b, c. 为此,我打算重复列的名称作为字符串并使用
eval/parse/text=ColName//
, 允许函数引用它。 我从另一个答案中抓住了这种技术。
它良好工作,直到我放置
ddply//
在另一个功能内。 这是一个示例代码:
# Required packages:
library/plyr/
myFunction <- function/x, y/{
NewColName = "a"
z = ddply/x, y, summarize,
Ave = mean/eval/parse/text=NewColName//, na.rm=TRUE/
/
return/z/
}
a = c/1,2,3,4/
b = c/0,0,1,1/
c = c/5,6,7,8/
df = data.frame/a,b,c/
sv = c/"b"/
#This works.
ColName = "a"
ddply/df, sv, summarize,
Ave = mean/eval/parse/text=ColName//, na.rm=TRUE/
/
#This doesn't work
#Produces error: "Error in parse/text = NewColName/ : object 'NewColName' not found"
myFunction/df,sv/
#Output in both cases should be
# b Ave
#1 0 1.5
#2 1 3.5
有任何想法吗? NewColName 甚至在功能内定义!
我认为这个问题的答案,
https://coderoad.ru/5873922/
, 它可以帮助我,但今天我已经遭受了足够的痛苦,现在是时候养手并寻求帮助。
没有找到相关结果
已邀请:
5 个回复
龙天
赞同来自:
在
.
, 添加到 plyr 十二月 2012 年度,反映当前的背景。
詹大官人
赞同来自:
和
, 在环境中建立挑战
仍然可见:
董宝中
赞同来自:
从
或者
或者其他东西,而且没有足够聪明地猜测各种环境中导航的所有融资,我倾向于绕过问题,只需使用
而是使用自己的匿名功能:
显然,值得做的是 'manually', 但这常常避免与联盟产生的评估问题相关的头痛
和
. 当然,这并不意味着哈德利不会有决定......
知食
赞同来自:
. 众所周知 parent.frame// 可以做出非常棒的事情和意想不到的事情。 T.
决定 @James - 这是一个非常好的解决方法,
但如果我记得正确,我自己 @Hadley 以前说过包装 plyr 不适用于功能。
对不起,我错了。 但是,众所周知,目前包装 plyr 在这些情况下创造问题。
因此,我给你一个基本解决这个问题的解决方案。 :
冰洋
赞同来自:
看B. parent.frame/1/. 因此,如果你确定 NewColName 在......之外 MyFunction, 它应该工作:
使用
, 拔出 my.parse 从早期的环境中,我们可以更接近,但仍然必须通过 curenv 作为全球:
我怀疑
已经在评估中 .GlobalEnv, 因此,所有策略
和
, 我尝试过,失败了。
</environment:>