提问人:Nathan Stutzman 提问时间:9/14/2023 最后编辑:zx8754Nathan Stutzman 更新时间:9/14/2023 访问量:46
将参数列表传递给 ggstatsplot 函数
Pass list of arguments to ggstatsplot function
问:
我正在使用 ggstatsplot 制作许多相似的图,但绘制的确切数据或变量在每个图之间会有所不同。我想将大多数(常量)参数分配给一个变量,我可以为每个图调用该变量。这样,如果我想更新所有情节的论点,我只需要在一个地方更改它(即尽量不重复自己)。
根据这个 StackOverflow 解决方案,我尝试了两种方法。
第一次尝试:[编辑以在 c() 中添加 list(),它给出了与尝试 2 相同的错误]
Def_Args2 <- list(
pairwise.display = "significant",
plot.type = "box",
results.subtitle = FALSE, # Remove freq stat subtitle
violin.args = list(alpha = 0), # Remove violin
point.args = list(alpha = 0), # Remove points (unless can do beeswarm here?)
boxplot.args = list(notch = TRUE,
width = 0.4,
alpha = 0.5,
aes(fill = Treatment)
),
pairwise.comparisons = TRUE,
centrality.plotting = FALSE, # Don't plot mean
bf.message = FALSE # Remove Bayes stat subtitle
)
do.call(ggbetweenstats,
c(
list(
data = FluorByTreatment_Fltr_Iter3.tdf,
x = FluorByTreatment_Fltr_Iter3.tdf$Treatment,
y = FluorByTreatment_Fltr_Iter3.tdf$Area,
type = "parametric", # ANOVA or Kruskal-Wallis
var.equal = FALSE), # ANOVA or Welch ANOVA
Def_Args2
)
)
第二次尝试:
Def_Args1 <- list(
data = FluorByTreatment_Fltr_Iter3.tdf,
x = FluorByTreatment_Fltr_Iter3.tdf$Treatment,
y = FluorByTreatment_Fltr_Iter3.tdf$Area,
type = "parametric", # ANOVA or Kruskal-Wallis
var.equal = FALSE, # ANOVA or Welch ANOVA
pairwise.display = "significant",
plot.type = "box",
results.subtitle = FALSE, # Remove freq stat subtitle
violin.args = list(alpha = 0), # Remove violin
point.args = list(alpha = 0), # Remove points (unless can do beeswarm here?)
boxplot.args = list(notch = TRUE,
width = 0.4,
alpha = 0.5,
aes(fill = Treatment)
),
pairwise.comparisons = TRUE,
centrality.plotting = FALSE, # Don't plot mean
bf.message = FALSE # Remove Bayes stat subtitle
)
exec(ggbetweenstats, !!!Def_Args1)
两者都给出错误:
ensym(x) 中的错误
我的猜测是某些参数与这些输入法不兼容。有没有其他输入法可以尝试?还是我应该放弃希望?谢谢!
从Reddit交叉发布
答:
4赞
Till
9/14/2023
#1
您可以围绕它编写一个自定义函数,该函数接受
那些因情节而异的参数的参数
(data, x, y, type, var.equal)。其他参数可以硬编码为
函数。当您想要更改所有绘图的参数值时,可以修改函数代码。如果您后来注意到您想改变一些
硬编码参数,您可以将这些参数作为参数添加到自定义函数中。ggbetweestats()
ggbetweenstats()
在下面的示例中,我添加了一个默认值的参数
值“显著”。这意味着,如果您不指定该参数,它将
默认为“显著”,但如果您想更改某些绘图的它,
您可以在函数调用中指定另一个值(请参阅示例中的第 2 次调用。pairwise.display
custom_ggbs()
由于您没有共享数据,因此我下面的示例使用同名包中的数据集。gapminder
library(ggstatsplot)
library(gapminder)
custom_ggbs <-
function(data,
x,
y,
type,
var.equal,
pairwise.display = "significant") ggbetweenstats(
data = data,
x = {{x}},
y = {{y}},
type = type,
var.equal = var.equal,
pairwise.display = "significant",
plot.type = "box",
results.subtitle = FALSE,
violin.args = list(alpha = 0),
point.args = list(alpha = 0),
pairwise.comparisons = TRUE,
centrality.plotting = FALSE,
bf.message = FALSE
)
custom_ggbs(data = gapminder,
x = continent,
y = lifeExp,
type = "parametric",
var.equal = FALSE)
custom_ggbs(data = gapminder,
x = continent,
y = gdpPercap,
type = "parametric",
var.equal = FALSE,
pairwise.display = "all")
评论