【问题标题】:How to locate elements that meet a condition in one matrix to identify elements in a second matrix如何在一个矩阵中定位满足条件的元素以识别第二个矩阵中的元素
【发布时间】:2019-12-22 10:10:11
【问题描述】:

我想确定一个矩阵中满足条件的元素的位置,然后将这些位置应用于另一个矩阵并找到这些位置的平均值。

my_vector_1<-c(1,2,1,4,1,1,7,8,)
my_matrix_1<-matrix(data=my_vector_1, nrow=3, ncol=3)

my_vector_2<-c(2,4,6,8,10,11,12,13,14)
my_matrix_2<-matrix(data=my_vector_2, nrow=3, ncol=3)

先定位my_matrix_1==1在第一个矩阵中的位置求...

[1,1]
[2,2]
[3,1]
[3,2]

然后找到第二个矩阵中位于上述位置的元素的平均值...

7.25    #mean of 2, 10, 6, 11 in my_matrix_2

【问题讨论】:

  • 使用which(my_matrix_1 == 1, arr.ind = TRUE)

标签: r matrix indexing subset


【解决方案1】:

我们可以使用arr.ind 来查找行/列位置

ind <- which(my_matrix_1 == 1, arr.ind = TRUE)
ind
#     row col
#[1,]   1   1
#[2,]   3   1
#[3,]   2   2
#[4,]   3   2


mean(my_matrix_2[ind])
#7.25

另一种方法是

mean(my_matrix_2 * NA^(my_matrix_1 != 1), na.rm = TRUE)

【讨论】:

    【解决方案2】:

    您可以将my_matrix_2 设置为子集,其中my_matrix_1 的值为1,并取其中的mean

    mean(my_matrix_2[my_matrix_1  == 1])
    #[1] 7.25
    

    【讨论】:

      猜你喜欢
      • 2019-12-24
      • 1970-01-01
      • 1970-01-01
      • 2020-09-20
      • 1970-01-01
      • 2018-03-19
      • 2021-01-03
      • 2019-03-09
      • 1970-01-01
      相关资源
      最近更新 更多