R 如何在ggplot函数中使用以数字开头的列名

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

我有一个巨大的数据框,它的变量/列名以一个数字开头,比如'1_variable'。现在,我尝试创建一个函数,该函数可以将这些列名作为参数,然后使用ggplot绘制一些方框图。但是,我需要字符串,但也需要将其输入与``一起使用,以使用ggplot中的参数。但是,我不知道如何转义字符串,例如“1_variable”,以便为ggplot提供“1_variable”的输入

小型可复制示例:

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")