gpt4 book ai didi

R:使用嵌套应用在两个数据框中的所有列组合上运行

转载 作者:行者123 更新时间:2023-12-01 01:21:40 24 4
gpt4 key购买 nike

给定两个列数相同的矩阵。

m1 <- matrix(1:12, ncol=3)
m2 <- matrix(10:2, ncol=3)

假设我有一个函数,它接受两个向量并执行类似于每个向量 min 的乘积的操作(玩具示例):
fun <- function(v1, v2)(min(v1)*min(v2))

我无法理解如何通过使用两个嵌套的 apply 调用对所有列组合执行该函数。
在 m1 和第一列上使用 apply 就像:
apply(m1, 2, fun, m2[,1])

我坚持循环遍历所有 m2 的列,例如:
m3<-matrix(NA, ncol=3, nrow=3)
for(c in 1:ncol(m2)){
m3[,c] <- apply(m1, 2, fun, m2[,c])
}

这给
> m3
[,1] [,2] [,3]
[1,] 10 9 8
[2,] 50 45 40
[3,] 90 81 72

那么如何将这个循环框架化为 apply 呢?

编辑:代码有错误 - 抱歉。查看编辑

最佳答案

如果您有兴趣使用嵌套 apply , 我们能试试

apply(m1, 2, function(x) apply(m2, 2, function(y) min(x) * min(y)))

# [,1] [,2] [,3]
#[1,] 8 40 72
#[2,] 5 25 45
#[3,] 2 10 18

由于您已经定义了函数,
apply(m1, 2, function(x) apply(m2, 2, fun, x))

会更简单。

关于R:使用嵌套应用在两个数据框中的所有列组合上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41759476/

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