【发布时间】:2020-05-22 23:53:52
【问题描述】:
我编写了一个 Shiny 应用程序,它根据用户输入计算数据子集之间的 t.tests 并选择 data.frame。输入将是可变的,因此我试图提出一个在比较涉及n=1 观察时不会失败的代码。换句话说,我想计算t.tests 并产生结果,但只是忽略用户选择变量时可能出现的 n=1 子组。我尝试使用tryCatch 抑制错误,但我的方法完全阻止了代码评估。
下面是我正在尝试做的事情。我使用ggpubr 来计算统计数据和随后的绘图,但失败发生在t.test 步骤。谢谢!
library(ggpubr)
#> Loading required package: ggplot2
df1 <- data.frame( y = rnorm(30),
x = rep(c("a", "b", "c"), 10),
grp = c(rep("grp1", 14), rep("grp2", 14), rep("grp3", 2)))
head(df1)
#> y x grp
#> 1 -0.13492634 a grp1
#> 2 -0.61828715 b grp1
#> 3 -0.63773980 c grp1
#> 4 -0.37607819 a grp1
#> 5 -1.38494920 b grp1
#> 6 -0.02036611 c grp1
compare_means(y~x, data = df1, method = "t.test")
#> # 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 y a b 0.0241 0.072 0.024 * T-test
#> 2 y a c 0.319 0.32 0.319 ns T-test
#> 3 y b c 0.0934 0.19 0.093 ns T-test
compare_means(y~x, data = df1, method="t.test", group.by = "grp")
#> Error in t.test.default(xi, xj, paired = paired, alternative = alternative, : not enough 'x' observations
# Data frame that will not fail to demonstrate what I want at the end
df2 <- data.frame( y = rnorm(30),
x = rep(c("a", "b", "c"), 10),
grp = c(rep(c("grp1", "grp2", "grp3"), each=10)))
head(df2)
#> y x grp
#> 1 0.6382919 a grp1
#> 2 -0.2909966 b grp1
#> 3 0.8555486 c grp1
#> 4 -1.3737311 a grp1
#> 5 -0.8560113 b grp1
#> 6 -1.2295995 c grp1
# I want an output like this with NAs where computation isn't possible due to n=1
compare_means(y~x, data = df2, method="t.test", group.by = "grp")
#> # A tibble: 9 x 9
#> grp .y. group1 group2 p p.adj p.format p.signif method
#> <chr> <chr> <chr> <chr> <dbl> <dbl> <chr> <chr> <chr>
#> 1 grp1 y a b 0.635 1 0.635 ns T-test
#> 2 grp1 y a c 0.607 1 0.607 ns T-test
#> 3 grp1 y b c 0.375 1 0.375 ns T-test
#> 4 grp2 y a b 0.984 1 0.984 ns T-test
#> 5 grp2 y a c 0.719 1 0.719 ns T-test
#> 6 grp2 y b c 0.371 1 0.371 ns T-test
#> 7 grp3 y a b 0.542 1 0.542 ns T-test
#> 8 grp3 y a c 0.0853 0.77 0.085 ns T-test
#> 9 grp3 y b c 0.178 1 0.178 ns T-test
由reprex package (v0.3.0) 于 2020-05-22 创建
【问题讨论】:
标签: r error-handling statistics