gpt4 book ai didi

r - 哪个适用于两个数字矩阵?

转载 作者:行者123 更新时间:2023-12-04 10:07:53 24 4
gpt4 key购买 nike

假设我有一个向量 1000 x观测值和 1000 的向量 y观察。每行 x和每一行 y分别对应100个样本。

x <- t(replicate(1000, rnorm(100,mean=6)))
y <- t(replicate(1000, rnorm(100,mean=5)))

我想进行 t.test 以查看 x 的每一行的平均值是否与 y 的每一行的平均值显着不同.

哪个是对的apply在这种情况下使用?理想情况下,它应该是这样的:

Xapply(x,y, function(x,y) t.test(x,y)$conf.int)

这可能吗?

最佳答案

1) mapply 试试这个。 dt_ 将每个 xy 转换为原始行的数据框,这也是允许 mapply 的原始行列表 直接使用。您可能希望也可能不希望显示外部 t,具体取决于所需的输出方向:

dt_ <- function(x) data.frame(t(x))
conf.int.1 <- t(mapply(function(x, y) t.test(x, y)$conf.int, dt_(x), dt_(y)))

1a) 函数使用公式符号的变体略短。在 gsubfn home page 上查看有关 fn 的信息在package documentation更多

library(gsubfn) # fn
conf.int.1a <- t(fn$mapply(~ t.test(x, y)$conf.int, dt_(x), dt_(y)))

2) apply 另一种方法是从 xy 创建一个 3d 数组,然后在第一个维度上应用 t 检验:

z <- array(c(x, y), c(dim(x), 2))
conf.int.2 <- t(apply(z, 1, function(x) t.test(x[, 1], x[, 2])$conf.int))

2a) 可以使用 abind 中的 abind 实现创建 3d 数组的稍微好一点的方法。包裹:

library(abind)
a <- abind(x, y, along = 3)
conf.int.2a <- t(apply(a, 1, function(x) t.test(x[, 1], x[, 2])$conf.int))

更新:添加了解决方案 2。

更新:添加了解决方案 2a。

关于r - 哪个适用于两个数字矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20732226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com