我想确定一个矩阵中满足条件的元素的位置,然后将这些位置应用于另一个矩阵并找到这些位置的平均值。
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
您可以子集my_matrix_2
其中my_matrix_1
的值为 1 并获取这些值mean
。
mean(my_matrix_2[my_matrix_1 == 1])
#[1] 7.25
我们可以使用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)