-1

我是 R 编程的新手。我面临解决此问题的问题:

数据集:

set.seed(897)
ME <- matrix(rnorm(24000),nrow=1000)
colnames(ME) <- c(paste("A",1:12,sep=""),paste("B",1:12,sep=""))

使用 apply() 计算 ME 中每一行的统计检验。您想询问 A 组和 B 组是来自同一总体还是来自具有不同均值的总体。您可以假设数据是正态分布的。计算 p 值等于或小于 0.05 的行数。

我试过 >P<- apply(ME , 1 , function(ME){ t.test(ME[1:1000])$p.value }) > length(which(P <= 0.05)) 皱眉表情,但这是不正确的

4

1 回答 1

1

如果列名不是按特定顺序排列的,那么我们可以使用它grep来查找以 开头的列名的A索引B

 ind1 <- grep('^A', colnames(ME))
 ind2 <- grep('^B', colnames(ME))

然后我们使用witht.test逐行执行applyMARGIN=1

 pval <- apply(ME, 1, FUN=function(x) t.test(x[ind1], x[ind2])$p.value)
 head(pval)
 #[1] 0.4987050 0.0303736 0.7143174 0.2955703 0.5082427 0.2109010

我们通过与 0.05 比较得到一个逻辑索引

 v1 <- pval <= 0.05

获取sumTRUE以查找p.value小于 0.05的行数

sum(v1)
#[1] 55
于 2015-08-30T15:07:23.860 回答