【问题标题】:Conditional co-occurrence between two matrices R两个矩阵 R 之间的条件共现
【发布时间】:2019-09-13 03:31:23
【问题描述】:

假设我有两个矩阵(例如距离矩阵),我想获得满足矩阵 A 中条件 A 和矩阵 B 中条件 B 的行值的共现。

set.seed(123)
matrix_A = dist(sample(1:100, 4))

   1  2  3
2 50      
3 12 38   
4 57  7 45

matrix_B = dist(sample(seq(0.1, 0.9, 0.001), 4))

     1     2     3
2 0.717            
3 0.332 0.385      
4 0.041 0.676 0.291

现在我想应用一个简单的规则:多久做一次......

  • 矩阵 A 中大于 40 的值和
  • 矩阵B中大于0.5的值同时出现?

我会寻找理想情况下从另一个矩阵派生的单个值,例如

1  2  3
2  1     
3  0 0   
4  0 0 0

所以这里只有第一次和第二次观察(矩阵 A:50,矩阵 B:0.717)是规则为真,即共现值为 1。

我将如何在 R 中做到这一点?我正在寻找两个矩阵的条件比较的实现。

【问题讨论】:

  • replace(matrix_B, TRUE, (matrix_A > 40) * (matrix_B > 0.5))

标签: r matrix


【解决方案1】:

怎么样:

matrix((matrix_A > 40) & (matrix_B > 0.5), nrow=3, ncol = 3)

输出:

      [,1]  [,2]  [,3]
[1,]  TRUE FALSE  TRUE
[2,] FALSE FALSE FALSE
[3,] FALSE FALSE FALSE

【讨论】:

    【解决方案2】:

    你需要的是:

    `attributes<-`(matrix_A>40 & matrix_B>0.5,attributes(matrix_A))
      1 2 3
    2 1    
    3 0 0  
    4 0 0 0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      • 2018-08-31
      • 2022-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多