在R中使用mapply时将t.test的输出保存到数据帧

在R中使用mapply时将t.test的输出保存到数据帧,r,statistics,R,Statistics,我有两个类似的数据帧 a b c 1 2 3 2 3 3 1 2 3 使用相同的列名。我正在使用 mapply(t.test, df1, df2) 输出比较两个数据帧之间的a、b和c类型列的t.text的结果。这将产生(实际结果): 等等(我在每个数据帧中有大约180列数据)。我需要将列的名称及其对应的p值存储在矩阵中。在另一列中存储哪个数据帧包含较高的值也很有帮助。帮助?试试这个: mapply(function(x, y) t.test(x

我有两个类似的数据帧

a    b    c
1    2    3
2    3    3
1    2    3
使用相同的列名。我正在使用

mapply(t.test, df1, df2)
输出比较两个数据帧之间的a、b和c类型列的t.text的结果。这将产生(实际结果):

等等(我在每个数据帧中有大约180列数据)。我需要将列的名称及其对应的p值存储在矩阵中。在另一列中存储哪个数据帧包含较高的值也很有帮助。帮助?

试试这个:

mapply(function(x, y) t.test(x,y)$p.value, df1, df2)
# on my sample(/dummy) data.frames
#           a           b           c 
# 0.009963864 0.009963864 0.020204103 

如果您想要2列格式的data.frame格式,可以使用
堆栈
将其包装起来,如下所示:

stack(mapply(function(x, y) t.test(x,y)$p.value, df1, df2))
#        values ind
# 1 0.009963864   a
# 2 0.009963864   b
# 3 0.020204103   c

t.tests的结果实际上存储在一个列表中,因此您可以使用访问器
调用$p.value
。啊,太好了!非常感谢。如果您想在保存p值的同时保存t统计量,该怎么办?
stack(mapply(function(x, y) t.test(x,y)$p.value, df1, df2))
#        values ind
# 1 0.009963864   a
# 2 0.009963864   b
# 3 0.020204103   c