全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2299 2
2016-10-22
悬赏 10 个论坛币 未解决

自己编了一个简单的函数,其中Month是data=airquality中的变量,airquality是R自带的数据。我想调用data中的其他变量对Month做方差分析,如Wind,Temp等,用y做形参传递。估计涉及到NSE吧,可能用到lazyeval包,或substitute函数,但这块一直搞不明白,请高手指教。
#函数
aaov <- function(y)
  {
  ao<-aov(y~Month,data=airquality)
}

#调用
#调用时发现:
>aaov("wind") [url=]Show Traceback[/url]
[url=]Rerun with Debug[/url]

Error in model.frame.default(formula = y ~ Month, data = airquality, drop.unused.levels = TRUE) :   变数的长度不一样('Month')

>aaov(wind) [url=]Show Traceback[/url]
[url=]Rerun with Debug[/url]

Error in eval(expr, envir, enclos) : 找不到对象'wind'


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-10-25 23:48:55
不知道这样合不合你的原意

> aaov <- function(y)
+ {  airquality$x<-airquality[[y]]
+   aov(x~Month,data=airquality)
+ }
>
> aaov("Wind")
Call:
   aov(formula = x ~ Month, data = airquality)

Terms:
                    Month Residuals
Sum of Squares    59.9702 1826.5836
Deg. of Freedom         1       151

Residual standard error: 3.478014
Estimated effects may be unbalanced
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-10-26 00:34:15
这倒是一个办法,谢谢
我在SO也问了,他们给的答案也不错。我真正要用的是lmer,但想道理一样,就用aov。
http://stackoverflow.com/questions/40202763/string-argument-in-user-defined-function
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群