【发布时间】:2020-10-01 23:40:49
【问题描述】:
我发现很难提出一个合适的问题,所以我用一个例子来说明我的问题。我想使用特定函数为我的数据集中的多个变量创建类似的图。该函数创建一个汇总数据框并生成一个图。
因此,如果没有函数,我会使用 summarySE() 函数 (source) 执行以下操作
library(ggplot2)
library(plyr)
#data
df <- data.frame(case=rep(1:5,3),
value=rnorm(15))
#summarise
df_sum <- summarySE(df, "value", groupvars=c("case"))
#plot
ggplot(df_sum, aes(x=case, y=value)) +
geom_point()
现在我尝试编写一个函数,该函数接受一个数据帧和该数据帧中的一个变量,并生成上面的图。
#function reproducing a nonsensical plot
f <- function(data,var){
data_sum <- summarySE(data, var, groupvars=c("case"))
x <- ggplot(data_sum, aes(x=case, y=var)) +
geom_point()
return(x)
}
f(df,"value")
我认为我可以从 df_sum 中的汇总变量与 df 中的变量命名相同的事实中受益。但是因为 ggplot() 采用了我在 f() 中调用的字符串,所以它产生了一个无意义的图。
有人有解决此类问题的通用解决方案吗?这不是我第一次在函数中使用字符串作为输入时遇到此类问题。我尝试了 unquote() 和类似的东西,但没有任何效果。
【问题讨论】: