在 R 中的函数中使用 ggplot() 时出错

ggplot() error while using it in a function in R

我第一次使用 ggplot() 需要帮助。 我有一个函数定义如下:

myHist <- function(data, varName = "") {
gp <- ggplot(data, aes(data[, varName]))
gp <- gp + geom_histogram(alpha = 1, aes(fill=..count..))
gp <- gp + labs(title = paste("Histogram for ", varName, sep = " "))
gp <- gp + labs(x = varName, y = "N") 
gp <- gp + scale_fill_gradient("", low = "blue", high = "red")
gp

}

然后按如下方式使用它:

myHist(data = iris, varName = "Petal.Width")

出现以下错误:

"Error in eval(expr, envir, enclos) : object 'varName' not found"

有人可以帮忙吗?在调试时,如果我初始化传递给函数内部的参数,则可以正常工作。但是函数本身不起作用

您需要使用aes_string,因为您的变量是函数的输入值,存储为字符值。

myHist <- function(data, varName = "") {
  gp <- ggplot(data=data, aes_string(varName))
  gp <- gp + geom_histogram(alpha = 1, aes(fill=..count..))
  gp <- gp + labs(title = paste("Histogram for", varName, sep = " "))
  gp <- gp + labs(x = varName, y = "N") 
  gp <- gp + scale_fill_gradient("", low = "blue", high = "red")
  gp}