R 申请两个矩阵-t检验

R 申请两个矩阵-t检验,r,apply,R,Apply,看起来我不知道如何做一个简单的代码。。。对于t.test计算,我想使用任何apply函数而不是循环。我有两个矩阵: data1 <- t(replicate(2000, rnorm(200,mean=6))) data2 <- t(replicate(2000, rnorm(200,mean=5))) 我错过了什么 为了明确我的目标: t.test(data1[,i], data2[,i]) 我想从中提取p值并存储为向量。由于矩阵的维数相等,您可以使用sapply循环列索引,并将

看起来我不知道如何做一个简单的代码。。。对于
t.test
计算,我想使用任何
apply
函数而不是循环。我有两个矩阵:

data1 <- t(replicate(2000, rnorm(200,mean=6)))
data2 <- t(replicate(2000, rnorm(200,mean=5)))
我错过了什么

为了明确我的目标:

t.test(data1[,i], data2[,i])

我想从中提取p值并存储为向量。

由于矩阵的维数相等,您可以使用
sapply
循环列索引,并将它们应用于两个矩阵


sapply(1:ncol(data1),function(x)t.test(data1[,x],data2[,x])$p.value)
以下代码将矩阵拆分为一个列表,其中每个元素包含一列,然后调用
t.test

all_t_tests = mapply(t.test, split(data1, 1:2000), split(data2, 1:2000), SIMPLIFY = FALSE)
从它们中获取
p.value

sapply(all_t_tests, '[[', 'p.value')

SIMPLIFY
设置为
TRUE
t.test
的结果合并到一个大数据结构中,而不是
t.test
结果列表

all_t_tests = mapply(t.test, split(data1, 1:2000), split(data2, 1:2000), SIMPLIFY = TRUE)
允许轻松访问
p.value

all_t_tests['p.value',]

您正在尝试进行两个样本t测试,比较data1中第1列和data2中第1列的平均值?对于第2、3、4列,我试图对两个矩阵中的对应列进行配对t检验。然后使用
sapply(1:ncol(data1),函数(x)t.test(data1[,x],data2[,x])$p.value)
这将起作用:
mapply(t.test,as.data.frame(data2),as.data.frame(data1),SIMPLIFY=FALSE)
@ChirayuChamoli当然,您也可以使用
as.data.frame
作为
数据来执行此操作。frame
不过是一个具有附加属性的列表,因此
mapply
将其视为一个列表。我确实喜欢使用
split
,因为它的功能更加明确。
all_t_tests['p.value',]