【发布时间】:2020-03-14 13:14:45
【问题描述】:
我正在指定一个函数来绘制这样的图表:
func.plot <- function(z){
df %>%
ggplot(aes(z)) +
geom_histogram(aes(y =..density..),
binwidth = 0.004,
col="red",
fill="green",
alpha=.2) +
geom_density(col=2) +
labs(title="title", x="z", y="vertical axis")
}
目的是为数据集中的一些变量生成直方图,因此在这个函数中,我还想使用变量名称作为x 轴的标题,以使图区分开来。但是,当使用 func.plot(var) 等变量调用函数时,会出现错误提示:
不知道如何为 tbl_ts/tbl_df/tbl/data.frame 类型的对象自动选择比例。默认为连续。
错误:美学长度必须为 1 或与数据 (883) 相同:x
我有几个问题:
-
对于这个特定的功能,如何修复它?
-
更一般地说,有时我想编写引用引号中的参数的函数,例如上面的 x 标题。另一个简单的例子是像这样读取或写入数据:
func.write <- function(x){
write.csv(x, file="x.csv", row.names=FALSE)
}
使用func.write(df) 调用时,此功能也未正确实现。它将写入数据,但名称为"x.csv"。
【问题讨论】:
-
你需要使用tidyeval
-
您可以通过
df$new_var <- df[, z]然后在aes中显式使用new_var来解决此问题