在 .R 可重用脚本中使用时,从 table 到数据帧的转换时创建的 Var1 不起作用

Var1 created while conversion from table to dataframe does not work when used in .R reusable script

我有一个具有不同年龄组的分类(因子变量)年龄 我正在创建一个条形图如下。 (加载所有库)

tl=table(df$Age)
df1=as.data.frame(tl)
p=ggplot(data = df1,mapping = aes(x = Var1, y = Freq))+geom_bar(stat="identity")
p=p+geom_text(aes(label=Freq), vjust=-0.3, size=3.5)
p=p+theme(axis.text.x = element_text(angle = 90))
p=p+labs(y="Y", x="X",title = "Title")

当我在 console/command 提示

上使用它时,这有效

但我尝试创建一个可重复使用的脚本并创建了一个函数如下

barfig_demo=function(x)
  
{
  
 
    
  library(dplyr)
  
  library(ggplot2)
    
    tl=table(x)
    df1=as.data.frame(tl)

    p=ggplot(data = df1,mapping = aes(x = Var1, y = Freq))+geom_bar(stat="identity")
    p=p+geom_text(aes(label=Freq), vjust=-0.3, size=3.5)
    p=p+theme(axis.text.x = element_text(angle = 90))
    p=p+labs(y="x", x="y",title = "title")
    ggsave(paste0("Test",".jpg"))
    
   
    
  }

我将 df$Age 列传递给此函数。使用 as.data.frame 创建数据框时,列名称为 Var1 和 Freq。 我收到如下错误

Error in FUN(X[[i]], ...) : object 'Var1' not found 

有人可以帮忙吗

我们可以使用 {{}} 花括号。

使用 {{ 运算符,您可以通过 arg 变量(函数参数)传输数据变量(即数据帧中的列):

隧道使得从数据框向包装函数提供变量成为可能:

看这里:https://www.tidyverse.org/blog/2020/02/glue-strings-and-tidy-eval/

你的情况: 在你的函数中替换:

tl=table(x)

tl=table({{x}})