gpt4 book ai didi

r - 在 R 中将两组向量相乘

转载 作者:行者123 更新时间:2023-12-04 12:01:00 37 4
gpt4 key购买 nike

假设我有两个矩阵 A 和 B:

 A:      A1    A2        B:      B1   B2
ROW1 V1 V2 ROW1 V3 V4
ROW2 V5 V6 ROW2 V7 V8

我想要一个结果矩阵 R,它包含两个矩阵列中每一对的乘积,如下所示:

 R:      A1_B1  A1_B2  A2_B1  A2_B2
ROW1 V1*V3 V1*V4 V2*V3 V2*V4
ROW2 V5*V7 V5*V8 V6*V7 V6*V8

循环结构可以,但我想知道是否有更好的选择。

最佳答案

你可以使用apply:

A <- matrix(1:4,2,2)
# [,1] [,2]
# [1,] 1 3
# [2,] 2 4
B <- A * 10
# [,1] [,2]
# [1,] 10 30
# [2,] 20 40

matrix(apply(A, 2, "*", B), nrow = nrow(A))
# [,1] [,2] [,3] [,4]
# [1,] 10 30 30 90
# [2,] 40 80 80 160

Antti 添加:

这很好用。最后,我需要它来操作 data.frame。为了为 data.frame 应用有意义的列名,我做了以下操作:

  1. 将该矩阵设为数据框:

    R <- as.data.frame(R)
  2. 制作A和B中列名的向量

    Acol <- grep("A", names(data.frame(A)), value = T) 
    Bcol <- grep("B", names(data.frame(B)), value = T)
  3. 然后重命名R的列:

    colnames(R) <- outer(Acol, Bcol, paste, sep = ".")

关于r - 在 R 中将两组向量相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21901932/

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