我必须在 R 中对一些不太好的数据运行 Shapiro-Wilk 测试...
因为我的数据具有相同的 3 个站值(OF 和 EX),所以 shapiro.test(package = stats)返回此错误
“shapiro.test 中的错误(df$Value[df$STATION ==“EX”]): 所有“x”值都相同”
有什么办法可以覆盖这个错误吗?
示例数据
df = structure(list(STATION = structure(c(3L, 3L, 3L, 2L, 2L, 2L,
1L, 1L, 1L), levels = c("EX", "OF", "RE"), class = "factor"),
Variable = c("pH", "pH", "pH", "pH", "pH", "pH", "pH", "pH",
"pH"), Value = c(8.3, 8.2, 8.2, 7.6, 7.6, 7.6, 8.2, 8.2,
8.2)), row.names = c(NA, -9L), class = c("tbl_df", "tbl",
"data.frame"))
示例代码
shap.t.result = shapiro.test(df$Value[df$STATION == "EX"])
您无法覆盖该错误,但您可以通过使用
try()
运行该函数来捕获它(并防止它停止您的代码)
shap.t.result <- try(shapiro.test(df$Value[df$STATION == "EX"]))
如果测试失败,您将获得
try-error
类的对象,而不是 htest
测试结果。 你也可以这样做:
my_shap_test <- purrr::safely(function(x) shapiro.test(x)$p.value,
otherwise = NA_real_)
my_shap_test(df$Value[df$STATION == "EX"])$result ## NA