1

各行ベクトルに名前がある行列があります。マトリックスの行メンバーシップを確認したいのですが、次を R コードに変換したいと考えています。

if(mat contains "rowname")
{  do appropriate task ....}
else if(mat contains "otherrowname")
{  do appropriate task ....}
else
{  do different task....}
  1. マトリックスの行メンバーシップをテストするにはどうすればよいですか?

すべての助けに感謝します!

4

3 に答える 3

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"
于 2013-05-06T16:52:14.900 に答える
2

次のようなコードがよく見られます。

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

これは、rownames-missing-entirely の可能性と同時に、target-not-in-rownames を同時に処理します。

于 2013-05-06T19:53:42.657 に答える
0

各行に行名がある限り、次のことができます。

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

これが役に立ち、コードが明確になることを願っています!

于 2013-05-06T16:48:12.457 に答える