如何获取p值列表?

5

我进行了Wilcoxon检验,现在我想将p.value提取到列表或矩阵中。

DF <- data.frame(A1=sample(1:9, 10, T),
                     A2=sample(1:9, 10, T),
                     A3=sample(1:9, 10, T),
                     B1=sample(1:9, 10, T),
                     B2=sample(1:9, 10, T),
                     B3=sample(1:9, 10, T))


sampA <- DF[,grep('A', names(DF))]  # Sample with columns A
sampB <- DF[,grep('B', names(DF))]  # Sample with columns B


lapply(1:nrow(DF), function(i){
  wilcox.test(as.numeric(sampA[i,]), as.numeric(sampB[i,]), exact=FALSE )
}) 

每行Wilcox检验的结果如下所示: 我想知道如何将p.value以列表或矩阵的形式导出到Excel文件中。 [[1]]

    Wilcoxon rank sum test with continuity correction

data:  as.numeric(sampA[i, ]) and as.numeric(sampB[i, ]) 
W = 3, p-value = 0.6579
alternative hypothesis: true location shift is not equal to 0 


[[2]]

    Wilcoxon rank sum test with continuity correction

data:  as.numeric(sampA[i, ]) and as.numeric(sampB[i, ]) 
W = 0, p-value = 0.0722
alternative hypothesis: true location shift is not equal to 0 


[[3]]

    Wilcoxon rank sum test with continuity correction

data:  as.numeric(sampA[i, ]) and as.numeric(sampB[i, ]) 
W = 6, p-value = 0.6579
alternative hypothesis: true location shift is not equal to 0 
2个回答

11

只需添加$p.value即可从wilcox.test对象中提取您的p值:

lapply(1:nrow(DF), function(i){
  wilcox.test(as.numeric(sampA[i,]), as.numeric(sampB[i,]), exact=FALSE )$p.value
}) 

给出的是:

[[1]]
[1] 1

[[2]]
[1] 1

[[3]]
[1] 0.8247781

[[4]]
[1] 0.8247781

使用sapply而不是lapply,您将获得一个向量而不是一个列表,这可能更容易操作。

sapply(1:nrow(DF), function(i){
  wilcox.test(as.numeric(sampA[i,]), as.numeric(sampB[i,]), exact=FALSE )$p.value
}) 

# [1] 1.0000000 1.0000000 0.8247781 0.8247781 0.0765225 0.8247781 1.0000000
# [8] 0.8247781 0.2682859 0.0765225

你比我快了大约60秒(而且显然也有关于sapply的相同想法),赞一个! :-) - Simon O'Hanlon

4
使用sapply函数并引用p.value名称...
sapply(1:nrow(DF), function(i){wilcox.test(as.numeric(sampA[i,]), as.numeric(sampB[i,]), exact=FALSE )$p.value})

#[1] 0.8247781 0.0765225 0.8247781 1.0000000 0.2682859 0.6625206 1.0000000
#[8] 0.1211833 0.5065552 0.8247781

这将返回一个向量而不是列表(我通常发现向量更容易处理,例如因为您无法使用mylist [[1:5]]索引列表,但您可以使用myvector [1:5],但这是个人偏好)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接