我正在尝试编写一个函数来调用带有不同参数的ggplot:
hmean <- function(data, column, Label=label){
ggplot(data,aes(column)) +
geom_histogram() +
facet_wrap(~Antibody,ncol=2) +
ggtitle(paste("Mean Antibody Counts (Log2) for ",Label," stain"))
}
hmean(Log2Means,Primary.Mean, Label="Primary")
Error in eval(expr, envir, enclos) : object 'column' not found
Primary.Mean
是不同的论点(我有多种方法)。在这里发表了各种帖子后我试过了
foo <-environment()
后跟ggplot中的environment=
arg)data2$column <- data[,column]
这些似乎都不适用于ggplot。如何编写有效的功能? 我将使用不同的data.frames和列调用它:
hmean(Log2Means, Primary.mean, Label="Primary")
hmean(Log2Means, Secondary.mean, Label="Secondary")
hmean(SomeOtherFrame, SomeColumn, Label="Pretty Label")
答案 0 :(得分:2)
您的示例不是reproducible,但可能会有效:
hmean <- function(data, column, Label=label){
ggplot(data, do.call("aes", list(y = substitute(column))) ) +
geom_histogram() +
facet_wrap(~Antibody,ncol=2) +
ggtitle(paste("Mean Antibody Counts (Log2) for ",Label," stain"))
}
hmean(Log2Means,Primary.Mean, Label="Primary")
如果您需要更多aes
的参数,请执行以下操作:
do.call("aes", list(y = substitute(function_parameter), x = quote(literal_parameter)))
答案 1 :(得分:1)
你可以试试这个:
hmean <- function(data, column, Label=label){
# cool trick?
data$pColumn <- data[, column]
ggplot(data,aes(pColumn)) +
geom_histogram() +
facet_wrap(~Antibody,ncol=2) +
ggtitle(paste("Mean Antibody Counts (Log2) for ",Label," stain"))
}
hmean(Log2Means,'Primary.Mean', Label="Primary")
答案 2 :(得分:-1)
我最终使用aes_string()调用:aes_string(x=foo, y=y, colour=color)
,wehre y
和color
也在ggplot()
外部定义。