在 .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}})
我有一个具有不同年龄组的分类(因子变量)年龄 我正在创建一个条形图如下。 (加载所有库)
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}})