帮助理解我在R中定义的函数中的错误
我对R非常陌生,刚刚学会编写简单的函数。有人能帮我理解为什么下面的函数不起作用吗帮助理解我在R中定义的函数中的错误,r,R,我对R非常陌生,刚刚学会编写简单的函数。有人能帮我理解为什么下面的函数不起作用吗 fboxplot <- function(mydataframe, varx, vary) { p <- ggplot(data=mydataframe, aes(x=varx, y=vary)) p + geom_boxplot() } col1 = factor(rep(1:3, 3)) col2 = rnorm(9) col3 = c(rep(10,5), rep(20,
fboxplot <- function(mydataframe, varx, vary)
{
p <- ggplot(data=mydataframe, aes(x=varx, y=vary))
p + geom_boxplot()
}
col1 = factor(rep(1:3, 3))
col2 = rnorm(9)
col3 = c(rep(10,5), rep(20,4))
df = data.frame(col1 = col1, col2 = col2, col3 = col3)
我在eval(expr、envir、enclose)中得到错误未找到对象varx
。我也试过了
fboxplot(df, varx = col1, vary = col2)
这就产生了同样的错误。我哪里做错了
谢谢您的帮助。问题在于您正在传递
varx
和vary
向量,而aes
函数需要变量名(但不是字符串)。解决此问题的一种方法是使用aes_string
函数,您可以将变量名作为字符串传递给该函数(但仍然不是向量):
以下方面应起作用:
fboxplot2 <- function(mydataframe, varx, vary) {
p <- ggplot(data=mydataframe, aes_string(x=varx, y=vary))
p + geom_boxplot() }
fboxplot2(df, "col1", "col2")
fboxplot2ggplot2中的aes
函数使用类似library()
的名称,即它以参数的名称作为参数。如果这是一个对象,它不会对其求值,而是取其名称。这里它将varx
作为参数,而不是varx
的计算结果
如果改用aes_string()
,并在fboxplot()调用中使用字符作为参数,则此方法有效:
fboxplot <- function(mydataframe, varx, vary)
{
p <- ggplot(data=mydataframe, aes_string(x=varx, y=vary))
p + geom_boxplot()
}
col1 = factor(rep(1:3, 3))
col2 = rnorm(9)
col3 = c(rep(10,5), rep(20,4))
df = data.frame(col1 = col1, col2 = col2, col3 = col3)
fboxplot(df, "col1", "col2")
fboxplot@Sacha,也许管理员必须安装照片处理摄像头?:)
fboxplot <- function(mydataframe, varx, vary)
{
p <- ggplot(data=mydataframe, aes_string(x=varx, y=vary))
p + geom_boxplot()
}
col1 = factor(rep(1:3, 3))
col2 = rnorm(9)
col3 = c(rep(10,5), rep(20,4))
df = data.frame(col1 = col1, col2 = col2, col3 = col3)
fboxplot(df, "col1", "col2")