我有一个矩阵,其中每个行向量都有一个名称。我想检查矩阵中的行成员资格,即我想将以下内容转换为 R 代码:
if(mat contains "rowname")
{ do appropriate task ....}
else if(mat contains "otherrowname")
{ do appropriate task ....}
else
{ do different task....}
- 如何测试矩阵中的行成员资格?
感谢所有帮助!
我有一个矩阵,其中每个行向量都有一个名称。我想检查矩阵中的行成员资格,即我想将以下内容转换为 R 代码:
if(mat contains "rowname")
{ do appropriate task ....}
else if(mat contains "otherrowname")
{ do appropriate task ....}
else
{ do different task....}
感谢所有帮助!
矩阵可能有也可能没有 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"
看到如下代码是很常见的:
if( sum( rowNameToFind %in% rownames(mat)) ) { TRUE }else{ FALSE }
这同时处理了完全丢失行名的可能性,同时处理了目标不在行名中。
只要每一行都有一个行名,您就可以执行以下操作:
> if("somerowname" %in% rownames(somematrix))
+ { print("true") } else print("false")
[1] "true"
我希望这会有所帮助,并且代码很清晰!