检查矩阵的行成员资格

时间:2013-05-06 16:44:15

标签: r matrix row membership

我有一个矩阵,其中每个行向量都有一个名称。我想检查矩阵中的行成员资格,即我想将以下内容转换为R代码:

if(mat contains "rowname")
{  do appropriate task ....}
else if(mat contains "otherrowname")
{  do appropriate task ....}
else
{  do different task....}
  1. 如何在矩阵中测试行成员身份?
  2. 感谢所有帮助!

3 个答案:

答案 0 :(得分:2)

矩阵可能会或可能没有rownames供您索引。您可以使用%in%运算符对它们编制索引。这是一个简单的例子:

 #Sample matrix
mat <- matrix(rnorm(100), ncol = 10)
#Find the row 'b'
rowNameToFind <- "b"


if (is.null(rownames(mat))) {
  print("no rownames to index!")
} else if  (rowNameToFind %in% rownames(mat)) {
  print("hurrary")
} else {
  print("boo")
}

#Returns
[1] "no rownames to index!"

#Define the rownames
rownames(mat) <- letters[1:10]


if (is.null(rownames(mat))) {
  print("no rownames to index!")
} else if  (rowNameToFind %in% rownames(mat)) {
  print("hurrary")
} else {
  print("boo")
}

#Returns
[1] "hurrary"

答案 1 :(得分:2)

看到代码看起来很常见:

 if( sum( rowNameToFind %in% rownames(mat)) ) { TRUE }else{ FALSE }

这同时处理了与目标不同的rownames完全不同的rownames。

答案 2 :(得分:0)

只要每行都有一个rowname,您就可以执行以下操作:

> if("somerowname" %in% rownames(somematrix))
+ { print("true") } else print("false")
[1] "true"

我希望这会有所帮助,代码也很明确!