R 按单元格内容、行索引合并表

R 按单元格内容、行索引合并表,r,matrix,match,lookup,R,Matrix,Match,Lookup,我想读出矩阵中每个(唯一)值的列号,并将该值添加到新表中,新表中的原始单元格值作为新矩阵中的行名 下面是一个最小工作示例(MWE): 许多(每人一个)矩阵中的一个 fruit_ranking_thomas <- matrix( c( "NA", "Pear", "Banana", "Strawberry", "Peach", "Rasberry", "Grapefruit", "Orange", "NA", "Apple" ), nrow = 2 ) print(fruit_ra

我想读出矩阵中每个(唯一)值的列号,并将该值添加到新表中,新表中的原始单元格值作为新矩阵中的行名

下面是一个最小工作示例(MWE):

许多(每人一个)矩阵中的一个

fruit_ranking_thomas <- matrix(
c(
    "NA", "Pear", "Banana", "Strawberry", "Peach", "Rasberry", "Grapefruit", "Orange", "NA", "Apple"
),
nrow = 2
)

print(fruit_ranking_thomas)
     [,1]   [,2]         [,3]       [,4]         [,5]   
[1,] "NA"   "Banana"     "Peach"    "Grapefruit" "NA"   
[2,] "Pear" "Strawberry" "Rasberry" "Orange"     "Apple"
我也已经有了一个空的矩阵
水果\u排名\u聚合

fruit_ranking_aggregate <- matrix(
  , # empty for now
  nrow = 8, # let's say there are 7 fruit
  ncol = 3, # let's say there's going to be 3 people
  dimnames = list(
    c(
        "Apple", "Banana", "Grapefruit", "Orange", "Peach", "Pear", "Rasberry", "Strawberry"
    ),
    c("Thomas", "Lisa", "Peter")
  )
)

print(fruit_ranking_aggregate)
               Thomas Lisa Peter
Apple          NA   NA    NA
Banana         NA   NA    NA
Grapefruit     NA   NA    NA
Orange         NA   NA    NA
Peach          NA   NA    NA
Pear           NA   NA    NA
Rasberry       NA   NA    NA
Strawberry     NA   NA    NA

fruit\u ranking\u aggregate我有一个解决方案可以解决这个问题,但我有一种预感,一定有一种更优雅/聪明的方法可以做到这一点

for (n in rownames(fruit_ranking_aggregate)){
    fruit_ranking_aggregate[n,"Thomas"] <- which(fruit_ranking_thomas == n, arr.ind = TRUE, useNames = TRUE)[2]
}
print(fruit_ranking_aggregate)
           Thomas Lisa Peter
Apple           5   NA    NA
Banana          2   NA    NA
Grapefruit      4   NA    NA
Orange          4   NA    NA
Peach           3   NA    NA
Pear            1   NA    NA
Rasberry        3   NA    NA
Strawberry      2   NA    NA
for(行名中的n(水果排名聚合)){

水果排名聚合[n,“Thomas”]当我在做时,我也不能让StackExchange格式对第一个表起作用。该死。
for (n in rownames(fruit_ranking_aggregate)){
    fruit_ranking_aggregate[n,"Thomas"] <- which(fruit_ranking_thomas == n, arr.ind = TRUE, useNames = TRUE)[2]
}
print(fruit_ranking_aggregate)
           Thomas Lisa Peter
Apple           5   NA    NA
Banana          2   NA    NA
Grapefruit      4   NA    NA
Orange          4   NA    NA
Peach           3   NA    NA
Pear            1   NA    NA
Rasberry        3   NA    NA
Strawberry      2   NA    NA