r - 当无法确定 wilcox.test p 值时如何返回 "NA"(R)

标签 r for-loop vector error-handling pairwise.wilcox.test

在 R 中,我尝试创建一个具有各种 p 值的向量,如下面的代码所示,但无法确定四个 wilcox.test p 值之一,因为只有一个类别。当 wilcox.test 无法执行时,如何使代码工作以生成带有 NA 的向量?

 set.seed(12345)
 df <- data.frame(
             a = c(rep("a", 5), rep("b", 4), rep("c", 6), rep("d", 10)),
             b = as.factor(c(1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0)),
             c = rnorm(25, 10, 6),
             stringsAsFactors = FALSE)
 x <- c("a", "b", "c", "d")
 vec <- vector()
 for (i in x) {
      vec <- c(vec, wilcox.test(c~b, data = df[df$a == i,])$p.val)
      }

最佳答案

您可以使用tryCatch:

library(tidyverse)
df %>%
  group_split(a) %>% 
    lapply(., function(x) {
      tryCatch(expr = wilcox.test(formula = c~b, data = x)$p.value, error = function(e) NA)
    }) %>% unlist



[1] 1.000000       NA 1.000000 0.352381

关于r - 当无法确定 wilcox.test p 值时如何返回 "NA"(R),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64552565/

相关文章:

r - 将整数转换为十进制值

python - 如果元素包含特定字符,则从列表或集合中删除元素

c# - 了解 BackgroundWorker

C++ 线程安全 vector .erase

r - 将两组列名称传递给函数

java - rJava、mac 10.12.6 和 Java v 9(R 版本 3.4.1)的问题

for-loop - perl6/落语 : dereferencing-question

c++ - 当我尝试将短语放入 vector 中时,短语的第一个单词被丢弃了?

c++ - 如何实现 sparse_vector 类

r - 包括每个 facet_wrap 中所有数据的绘图