我有一個矩陣,其中每個行向量都有一個名稱。我想查詢行成員資格在我的矩陣,這是我想談談以下爲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....}
所有幫助表示讚賞!
這是相當普遍地看到如下所示的代碼:同時
if(sum(rowNameToFind %in% rownames(mat))) { TRUE }else{ FALSE }
這涉及在同一時間爲目標不可─的rownames缺失,完全可能在-rownames。
只要每一行都有一個rowname你可以做到以下幾點:
> if("somerowname" %in% rownames(somematrix))
+ { print("true") } else print("false")
[1] "true"
我希望這有助於和代碼是明確的!
矩陣可能會或可能不會有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"
我想你搞錯了。無論'mat'上設置了什麼行名稱,只要rowNameToFind的長度大於'0',它就會計算爲TRUE。我錯過了什麼嗎? – 2013-05-08 02:16:31
我發現你的觀點令人信服。如何使用sum()? – 2013-05-08 06:29:32
是的,使用sum()的作品非常好。 – 2013-05-08 11:30:53