R ggpubr 使用全局环境对象?
R ggpubr use global environment objects?
我想使用 ggpubr 包引用在我的全局环境中的字符串中列出的数据框列名,但 ggpubr 似乎不接受变量,只接受硬编码的列名。有没有办法可以进行任何更改,以便它可以做到这一点?
vars = c('var1', 'var2')
controls = c('a', 'w')
df = data.frame(subject = 1:100,
value = rnorm(100, 100, 10),
var1 = rep(c('a', 'b'), 50),
var2 = rep(c('w', 'x', 'y', 'z'), 25))
library(ggpubr)
compare_means(value ~ vars, df, ref.group = 'a')
但我希望能够将 'vars' 替换为 var[1]、var[2] 等,同样适用于 ref.group = controls[1]、controls[2]。我可以让 ggpubr 引用全局环境对象而不是直接将输入作为列名吗?
我们可以使用reformulate
library(ggpubr)
fml <- reformulate(vars[1], 'value')
compare_means(fml , df, ref.group = controls[1])
# A tibble: 1 x 8
# .y. group1 group2 p p.adj p.format p.signif method
# <chr> <chr> <chr> <dbl> <dbl> <chr> <chr> <chr>
#1 value a b 0.537 0.54 0.54 ns Wilcoxon
并且对于使用相应值的多个元素,使用 base R
中的 Map
Map(function(x, y) compare_means(reformulate(x, 'value'), df,
ref.group = y), vars, controls)
或 map2
来自 purrr
library(purrr)
map2(vars, controls, ~ compare_means(reformulate(.x, 'value'), df,
ref.group = .y))
#[[1]]
# A tibble: 1 x 8
# .y. group1 group2 p p.adj p.format p.signif method
# <chr> <chr> <chr> <dbl> <dbl> <chr> <chr> <chr>
#1 value a b 0.537 0.54 0.54 ns Wilcoxon
#[[2]]
# A tibble: 3 x 8
# .y. group1 group2 p p.adj p.format p.signif method
# <chr> <chr> <chr> <dbl> <dbl> <chr> <chr> <chr>
#1 value w x 0.126 0.38 0.13 ns Wilcoxon
#2 value w y 0.985 1 0.98 ns Wilcoxon
#3 value w z 0.969 1 0.97 ns Wilcoxon
我想使用 ggpubr 包引用在我的全局环境中的字符串中列出的数据框列名,但 ggpubr 似乎不接受变量,只接受硬编码的列名。有没有办法可以进行任何更改,以便它可以做到这一点?
vars = c('var1', 'var2')
controls = c('a', 'w')
df = data.frame(subject = 1:100,
value = rnorm(100, 100, 10),
var1 = rep(c('a', 'b'), 50),
var2 = rep(c('w', 'x', 'y', 'z'), 25))
library(ggpubr)
compare_means(value ~ vars, df, ref.group = 'a')
但我希望能够将 'vars' 替换为 var[1]、var[2] 等,同样适用于 ref.group = controls[1]、controls[2]。我可以让 ggpubr 引用全局环境对象而不是直接将输入作为列名吗?
我们可以使用reformulate
library(ggpubr)
fml <- reformulate(vars[1], 'value')
compare_means(fml , df, ref.group = controls[1])
# A tibble: 1 x 8
# .y. group1 group2 p p.adj p.format p.signif method
# <chr> <chr> <chr> <dbl> <dbl> <chr> <chr> <chr>
#1 value a b 0.537 0.54 0.54 ns Wilcoxon
并且对于使用相应值的多个元素,使用 base R
Map
Map(function(x, y) compare_means(reformulate(x, 'value'), df,
ref.group = y), vars, controls)
或 map2
来自 purrr
library(purrr)
map2(vars, controls, ~ compare_means(reformulate(.x, 'value'), df,
ref.group = .y))
#[[1]]
# A tibble: 1 x 8
# .y. group1 group2 p p.adj p.format p.signif method
# <chr> <chr> <chr> <dbl> <dbl> <chr> <chr> <chr>
#1 value a b 0.537 0.54 0.54 ns Wilcoxon
#[[2]]
# A tibble: 3 x 8
# .y. group1 group2 p p.adj p.format p.signif method
# <chr> <chr> <chr> <dbl> <dbl> <chr> <chr> <chr>
#1 value w x 0.126 0.38 0.13 ns Wilcoxon
#2 value w y 0.985 1 0.98 ns Wilcoxon
#3 value w z 0.969 1 0.97 ns Wilcoxon