【问题标题】:How to return an "NA" when wilcox.test p value cannot be determined (R)当无法确定 wilcox.test p 值时如何返回“NA”(R)
【发布时间】:2021-02-09 14:54:49
【问题描述】:

在 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)
      }

【问题讨论】:

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


    【解决方案1】:

    你可以使用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
    

    【讨论】:

      【解决方案2】:

      我刚刚找到了一个方法:

       for (i in x) {
           vec <- c(vec, tryCatch(wilcox.test(c~b, data = df[df$a == i,])$p.val, error=function(err) NA))
        }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-10
        • 2019-03-19
        • 1970-01-01
        • 2019-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多