编写将data.frame列名称作为参数参数的函数

时间:2013-09-09 02:37:19

标签: r ggplot2

R中的某些功能可以将data.frame作为参数,同时具有可以接受names的{​​{1}}的单独参数(无需引用)他们作为字符串)。

这方面的一个具体示例是data.frame包中的函数qplot

ggplot2

myDF <- data.frame(values=rnorm(5*2), group=c(rep("A", 5), rep("B", 5))) qplot(values, data=myDF, colour=group, geom="density") 可以qplotvalues知道它们是group的列。

现在,如果我想编写一个在绘图之前进行一些预处理的包装函数,我将失去该功能:

myDF

现在,如果我尝试调用# A silly example. But lets assume our dataframe has more than 1 group column silly.wrapper <- function(dataframe, colour) { dataframe$values <- dataframe$values*2 qplot(values*2, data=dataframe, geom="density", colour=colour) } 并给它silly.wrapper,则会抛出一个错误,表明对象组尚未声明(正如您所期望的那样):

colour=group

我也尝试过使用# We have to call print because its a lattice plot so returned qplot won't render # otherwise. Removing call to print still results in the same error. print(silly.wrapper(myDF, colour=group)) Error in eval(expr, envir, enclos) : object 'group' not found In addition: Warning message: In eval(expr, envir, enclos) : restarting interrupted promise evaluation

...

但是得到相同的错误信息。

这引出了一个更普遍的问题:如何编写一个函数,如silly.wrapper <- function(dataframe, ...) { dataframe$values <- dataframe$values*2 qplot(values*2, data=dataframe, geom="density", ...) } ,它不会在以后检查对象的存在,即将其作为数据帧的列访问?

0 个答案:

没有答案