R中函数的用法

时间:2014-09-12 09:19:43

标签: r function

这确实有效:

mean(data21m1$TAPSE,na.rm=TRUE)

但我怎样才能做到这一点

chara_fun<-function(x) {
mean(data21m1$x,na.rm=TRUE)
}
chara_fun(TAPSE)

我认为这只是一件小事,但我不明白。

2 个答案:

答案 0 :(得分:3)

可以做你想做的事情,但它涉及使用evalsubstitute来获取父框架中的对象(我使用{{ 1}}和iris,因为我们没有您的数据框):

mtcars

如果传入数据框,你可以(prbly&#34;应该&#34;)使它更通用,你可以设置一个默认值,以便更容易使用:

charaFun <- function(col) {
  iris_col <- eval(substitute(col), iris, parent.frame())
  mean(iris_col, na.rm=TRUE)
}

charaFun(Sepal.Width)
## [1] 3.057

但是,&#34;传入引号&#34;涉及更少的代码,并且可能更直接地使用(尽管charaFun <- function(col, data=iris) { data_col <- eval(substitute(col), data, parent.frame()) mean(data_col, na.rm=TRUE) } charaFun(Sepal.Width) ## [1] 3.057 charaFun(cyl, mtcars) ## [1] 6.188 ggplotplyr之类的工作方式相反):

dplyr

答案 1 :(得分:1)

这不是在R中选择列/变量的方式。你需要通过&#34; TAPSE&#34;作为函数的字符串,然后将data21m1$x更改为data21m1[, x](在函数体中)。使用字符串变量访问列时,不能使用美元符号。