R 如何在ggplot函数中使用以数字开头的列名
我有一个巨大的数据框,它的变量/列名以一个数字开头,比如'1_variable'。现在,我尝试创建一个函数,该函数可以将这些列名作为参数,然后使用ggplot绘制一些方框图。但是,我需要字符串,但也需要将其输入与``一起使用,以使用ggplot中的参数。但是,我不知道如何转义字符串,例如“1_variable”,以便为ggplot提供“1_variable”的输入 小型可复制示例:R 如何在ggplot函数中使用以数字开头的列名,r,function,ggplot2,escaping,R,Function,Ggplot2,Escaping,我有一个巨大的数据框,它的变量/列名以一个数字开头,比如'1_variable'。现在,我尝试创建一个函数,该函数可以将这些列名作为参数,然后使用ggplot绘制一些方框图。但是,我需要字符串,但也需要将其输入与``一起使用,以使用ggplot中的参数。但是,我不知道如何转义字符串,例如“1_variable”,以便为ggplot提供“1_variable”的输入 小型可复制示例: dfx = data.frame(`1ev`=c(rep(1,5), rep(2,5)), `2ev`=sampl
dfx = data.frame(`1ev`=c(rep(1,5), rep(2,5)), `2ev`=sample(10:99, 10),
`3ev`=10:1, check.names = FALSE)
如果我手动绘制图形,输入将如下所示:
dfx$`1ev` <- as.factor(dfx$`1ev`)
ggplot(dfx, aes(x = `1ev`, y = `2ev`))+
geom_boxplot()
这给了我一个错误,在[.data.frame(data,c(group,value)):找不到对象“1ev”
2.试试看
plot_boxplot(dfx, `1ev`, `2ev`)
输入带有双引号“”的参数时,我意外地发现:
plot_boxplot(dfx, "1ev", "2ev")
3.试试看
我还尝试在函数中用gsub
替换字符串的双引号
gsub('\"', '`', group)
但这并没有改变它的产出
4.试试看
plot_boxplot(dfx, `1ev`, `2ev`)
最后,我还尝试使用aes\u string
,但这只会给我带来相同的错误
plot_boxplot <- function(data, group, value){
data = data[c(as.character(group), as.character(value))]
data[,group] = as.factor(data[,group])
plot <- ggplot(data, aes_string(x= group, y=value))+
geom_boxplot()
return(plot)
}
plot_boxplot(dfx, `1ev`, `2ev`)
plot_boxplot(dfx, "1ev", "2ev")
[可使用此代码手动生成]
ggplot(dfx, aes(x= `1ev`, y=`2ev`)) +
geom_boxplot()
任何帮助都将不胜感激。实现这一点的一种方法是将
aes\u
和as.name()
相结合:
这与上面显示的图不同,但看起来与数据一致。@jkhuc如果这对您有效,请接受它作为正确答案(并向上投票)。
ggplot(dfx, aes(x= `1ev`, y=`2ev`)) +
geom_boxplot()
plot_boxplot <- function(data, group, value){
data = data[c(group, value)]
data[,group] = as.factor(data[,group])
plot <- ggplot(data, aes_(x= as.name(group), y=as.name(value))) +
geom_boxplot()
return(plot)
}
plot_boxplot(dfx, "1ev", "2ev")