搜索對R中
回答
也許你想要/需要的是which(..., arr.ind = TRUE)
。
一些示例數據,用於演示:
set.seed(2)
n <- 10
mtx <- array(NA, dim = c(n, n))
dimnames(mtx) <- list(letters[1:n], LETTERS[1:n])
mtx[sample(n*n, size = 4)] <- paste0("x", 1:4)
mtx
# A B C D E F G H I J
# a NA NA NA NA NA NA NA NA NA NA
# b NA NA NA NA NA NA NA NA NA NA
# c NA NA NA NA NA NA NA NA NA NA
# d NA NA NA NA NA NA NA NA NA NA
# e NA NA NA NA NA NA NA NA NA NA
# f NA NA NA NA NA NA NA NA NA NA
# g NA "x4" NA NA NA "x3" NA NA NA NA
# h NA NA NA NA NA NA NA NA NA NA
# i NA "x1" NA NA NA NA NA NA NA NA
# j NA NA NA NA NA NA "x2" NA NA NA
在你的情況,似乎任何你想要的不是一個NA
或NaN
。你可以嘗試:
which(! is.na(mtx) & ! is.nan(mtx))
# [1] 17 19 57 70
但這並不總是直覺檢索行/列對(基因,我想?)。嘗試改爲:
ind <- which(! is.na(mtx) & ! is.nan(mtx), arr.ind = TRUE)
ind
# row col
# g 7 2
# i 9 2
# g 7 6
# j 10 7
如何使用它:整數分別是行和列索引。假設你的矩陣使用行名和列名,你可以檢索該行的名稱:(聰明的讀者可能會建議我用rownames(ind)
相反,它肯定有效!)
rownames(mtx)[ ind[,"row"] ]
# [1] "g" "i" "g" "j"
同樣爲colnames
和"col"
。
有趣的是,即使ind
是矩陣本身,你可以用子集mtx
相當容易:
mtx[ind]
# [1] "x4" "x1" "x3" "x2"
結合所有三個人在一起,你也許可以使用:
data.frame(
gene1 = rownames(mtx)[ ind[,"row"] ],
gene2 = colnames(mtx)[ ind[,"col"] ],
val = mtx[ind]
)
# gene1 gene2 val
# 1 g B x4
# 2 i B x1
# 3 g F x3
# 4 j G x2
我試過這種方法,但沒有效果......我有一個錯誤: _default方法沒有實現類型'list'_你知道該怎麼處理它嗎? –
顯然你的矩陣不是矩陣。沒有看到更多的數據,我不禁要看屏幕截圖。 – r2evans
使用_which_函數後出現。 –
我知道我的錯誤在哪裏,現在我有矩陣。分析你的代碼很有效,但這不完全是我想要做的。 a,b,c,d等是有機體,排名是基因(A,B,C,D等)。我必須將一對基因(在同一列中)與NA值相比較。
gene1 gene2
a A B
a A C
a A D
a A E
我試圖以這種方式,但元素數量不匹配,我不知道如何解決這個問題:例如,如果基因一個在列我必須有值= 4。
ind= which(! is.na(a) & ! is.nan(a), arr.ind = TRUE)
ind1=which(macierz==1,arr.ind = TRUE)
ramka= data.frame(
kolumna = rownames(a)[ ind[,"row"] ],
gene1 = colnames(a)[ ind[,"col"] ],
gene2 = colnames(a)[ind1[,"col"]],
#val = macierz[ind]
)
你知道如何在R中做到這一點嗎?
這真的不是一個答案,它似乎是對你的問題的澄清(或補充)。如果是這樣,請把它放在那裏(並刪除這個答案)。如果我誤解了這一點,並且已經用此代碼解決了問題,那麼您可以自己「接受」自己的答案。 – r2evans
- 1. 搜索中的R
- 2. 搜索中的R
- 3. 搜索中的R
- 4. r行中的搜索值
- 5. 在R表中搜索?
- 6. 搜索R對象的屬性
- 7. 歷史向後搜索R
- 8. R網站搜索JSON
- 9. GPS座標搜索-R-樹
- 10. [R單張搜索功能
- 11. 搜索所有,使用R
- 12. 使用R到Gsub搜索*
- 13. 布爾文本在R中搜索
- 14. 使用grep來搜索R中的行
- 15. 在R中搜索一系列網址
- 16. 搜索和字符串中的R
- 17. 在R中實施禁忌搜索
- 18. 在r-caret中隨機搜索
- 19. 搜索和使用中的R
- 20. 使用值來搜索r中的列
- 21. 'R'在矩陣中搜索值
- 22. Multi_dimensional R-Trees中的範圍搜索
- 23. 在R中的回溯行搜索
- 24. 如何在R中搜索表格?
- 25. 搜索對象
- 26. 搜索對象
- 27. 在NSArray中搜索對象
- 28. 在django中搜索對象
- 29. 搜索中JSON對象
- 30. 在java中對內搜索
請做一個可重現的例子。看到這個:http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example圖像不是解釋你需要什麼的最好方式。還包括所需的結果。 –
使用'dplyr'包的'gather()'函數,並過濾一些內容。 – knb
我相信你的意思是'tidyr'包。 – student