在 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}
我第一次使用 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}