首页 > 解决方案 > 如何从 R 上的矩阵返回 1 列值?

问题描述

快乐隔离..

我正在尝试将一个向量 (1,7) 的值与矩阵 (2,21) 匹配

这里的目标是将向量值与矩阵值匹配,因为两者中的值相等,如示例所示

if(Removed[,1] %like% T1PickProb[2]){
  print("yes")
} else{
  print("no match")
}

T1PickProb
[output]
0.01754386 0.06140351 0.13157895 0.23684211 0.28070175 0.17543860 0.09649123

Removed
[output]
           [,1]       [,2]       [,3]       [,4]       [,5]       [,6]       [,7]       [,8]       [,9]      [,10]      [,11]     [,12]     [,13]     [,14]      [,15]     [,16]     [,17]      [,18]
[1,] 0.01754386 0.01754386 0.01754386 0.01754386 0.01754386 0.01754386 0.06140351 0.06140351 0.06140351 0.06140351 0.06140351 0.1315789 0.1315789 0.1315789 0.13157895 0.2368421 0.2368421 0.23684211
[2,] 0.06140351 0.13157895 0.23684211 0.28070175 0.17543860 0.09649123 0.13157895 0.23684211 0.28070175 0.17543860 0.09649123 0.2368421 0.2807018 0.1754386 0.09649123 0.2807018 0.1754386 0.09649123
         [,19]      [,20]      [,21]
[1,] 0.2807018 0.28070175 0.17543860
[2,] 0.1754386 0.09649123 0.09649123

这应该打印出“yes”,因为 T1PickProb[2] 是 0.06140351,它位于 Removed[,1] 中,它有两个值 0.01754386 和 0.06140351。但是它打印出“不匹配”

所以我的问题是,有没有办法可以将值与矩阵中的特定列匹配?我试过以下

Removed[,1] 

但这在运行 about if 语句时会返回以下错误:

In if (Removed[, 1] %like% T1PickProb[2]) { :
  the condition has length > 1 and only the first element will be used

我也试过

Removed[1,2]

但是,这会返回第二列中的第一个值。我不确定还能做什么?任何帮助将不胜感激:)谢谢

标签: rif-statementmatrixvector

解决方案


T1PickProb此函数返回使用 Base-R 找到的每个值的列列表

lapply(T1PickProb, function(y) which( apply(removed, 2, function(x) any(x %in% y)) ==1))

[[1]]
[1] 1 2 3 4 5 6

[[2]]
[1]  1  7  8  9 10 11

[[3]]
[1]  2  7 15

[[4]]
[1]  3  8 18

[[5]]
[1]  4  9 20

[[6]]
[1]  5 10 14 17 19 21

[[7]]
[1]  6 11 15 18 20 21

数据:

removed <- structure(c(0.01754386, 0.06140351, 0.01754386, 0.13157895, 0.01754386, 
0.23684211, 0.01754386, 0.28070175, 0.01754386, 0.1754386, 0.01754386, 
0.09649123, 0.06140351, 0.13157895, 0.06140351, 0.23684211, 0.06140351, 
0.28070175, 0.06140351, 0.1754386, 0.06140351, 0.09649123, 0.1315789, 
0.2368421, 0.1315789, 0.2807018, 0.1315789, 0.1754386, 0.13157895, 
0.09649123, 0.2368421, 0.2807018, 0.2368421, 0.1754386, 0.23684211, 
0.09649123, 0.2807018, 0.1754386, 0.28070175, 0.09649123, 0.1754386, 
0.09649123), .Dim = c(2L, 21L), .Dimnames = list(NULL, NULL))

T1PickProb <- c(0.01754386,0.06140351,0.13157895,0.23684211,0.28070175,0.17543860,0.09649123)

推荐阅读