无法确定wilcox.test p值时如何返回“ NA”R

问题描述

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

 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)),c = rnorm(25,10,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
,

我刚刚找到了一种方法:

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...