【发布时间】:2013-04-25 12:45:04
【问题描述】:
我无法解决一个问题。想写一个这样的函数:
f.describe <- function(.data, .var, .by)
{
require(plyr)
res <- ddply(.data, .by,
summarize,
N = sum(!is.na(.var))
`Mean (SD)`=sprintf("%5.2f (%5.2f)",
mean(.var, na.rm=TRUE), sd=sd(.var, na.rm=TRUE)),
Median = sprintf("%5.2f", median(.var))
)
res
}
但我找不到传递用于处理的变量 (.var) 的方法。有这个错误:
Error eval(expr, envir, enclos) : object '.var' was not found(翻译自其他语言,因此对于英语用户来说可能不是逐字记录 )
我尝试了评估,替代但没有解决方案...非常感谢您的帮助。有时我不明白 R 用于评估的规则。
【问题讨论】:
-
plyr 确实存在函数内部变量范围的已知问题。
-
你的意思是。 (点)函数。我知道,但是四处走走我仍然没有解决办法......
-
不幸的是,当我遇到类似问题时,我找不到我所进行的讨论。我丑陋的解决方法是使用
<<-将局部变量推送到 plyr 可以找到它的全局环境中...... -
@baptiste:感谢您的建议。我不想使用全局变量。可以通过解析找到丑陋的解决方案,但我相信有一些漂亮的语言规则:)
-
related question and discussion (包括来自@hadley 的评论,暗示以下 Jan van der Laan 的解决方案是首选解决方法)
标签: r