【问题标题】:randomized element-wise multiplication in RR中的随机元素乘法
【发布时间】:2016-10-25 23:14:15
【问题描述】:

我一直在网站上搜索我的问题的答案,而且我是 R 新手,所以我希望这甚至是可能的。我有两个大型模拟矩阵(A = 100,000 x 50 和 B = 10,000 x 50),我想将它们随机逐行相乘。

基本上我希望 A 中的每一行从 B 中随机选择一行进行元素乘法。

答:

      [,1] [,2] [,3] [,4] [,5]
[1,]    1    1    1    1    1
[2,]    1    1    1    1    1
[3,]    1    1    1    1    1
[4,]    1    1    1    1    1
[5,]    1    1    1    1    1
[6,]    1    1    1    1    1
[7,]    1    1    1    1    1
[8,]    1    1    1    1    1
[9,]    1    1    1    1    1
[10,]   1    1    1    1    1

并且 乙:

      [,1] [,2] [,3] [,4] [,5]
[1,]    1    1    1    1    1
[2,]    2    2    2    2    2
[3,]    3    3    3    3    3
[4,]    4    4    4    4    4
[5,]    5    5    5    5    5

是否有一个运算符可以遍历 A 的行并从 B 中随机选择一行来配对以进行元素乘法?对于这样的结果:

 C <- A&*&B
 C
 A[1,]*B[3,]
 A[2,]*B[1,]
 A[3,]*B[2,]  
 A[4,]*B[5,] 
 A[5,]*B[3,]  
 A[6,]*B[4,] 
 A[7,]*B[1,]  
 A[8,]*B[5,] 
 A[9,]*B[2,] 
 A[10,]*B[2,]

谢谢!

【问题讨论】:

    标签: r matrix random elementwise-operations


    【解决方案1】:

    试试这个:

    row_id <- sample(1:nrow(B), nrow(A), replace = TRUE)
    A * B[row_id, ]
    

    我想我只需要解释一下sample() 的作用。考虑:

    sample(1:5, 10, replace = TRUE)
    [1] 4 5 2 4 1 2 2 1 2 5
    

    我没有通过set.seed()设置随机种子,所以当你运行它时,你会得到不同的结果。但你只需要知道:它是随机的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-24
      • 2021-12-22
      • 2012-03-12
      • 2017-08-19
      • 2020-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多