2016-10-04 82 views
-1

我來自Java/C++背景,最近剛剛開始使用R進行實際項目。R,如果缺少數據,訪問矩陣元素的方法

我經常與鬥爭的一件事是矩陣(或任何類型的列表/矢量/等)加入。

很多時候,我有一組數據存儲在一個矩陣對象中,並且想要提取一行,執行一些計算,然後移動到下一行。 但是,有時我不能遍歷矩陣行,而是需要通過行名訪問它們。

問題出現時,沒有給定名稱的行(這往往發生在我正在處理的數據中的很多)。我的功能只是中止。

我正在急切地尋找的是以某種方式訪問​​矩陣行,在那裏我只是得到'null','FALSE',無論對象,這使我能夠繼續運行腳本,即使數據丟失。 當然,我可以檢查給定的rowname是否是所有矩陣rownames的一部分,但這在運行時是不可行的。

+1

歡迎SO!請閱讀[問]和[mcve]!編輯你的問題給一個可複製的例子! – jogo

+0

*當然,我可以檢查我的rowname是否是所有矩陣rownames的一部分,但這僅僅是不可行的運行時*我猜你有大量數據,可能使用rownames而不是索引不是最好的選擇「運行時明智」 ... – Cath

+0

你能提供一個更具體的例子嗎?你可以使用'm [match(c(「b」,「d」,「a」,「b」),rownames(m)),]]而不是' m [c(「b」,「d」,「a」,「b」),]'(其中m =矩陣(1:6,3,2,...,列表(字母[1:3],NULL) )'),或者如果你想要使用更專業的結構,可以在''['''函數中添加一個方法並在裏面進行適當的檢查。 –

回答

1

將您的對帳單包含在try()中,然後檢查是否有錯誤。

tmp <- matrix(1:4, 2, 2, dimnames = list(c("a","b"), c("c", "d"))) 
result <- try(tmp["x",]) 
if(inherits(result, "try-error")) result <- NA 

又見將R幫助

?try 
?tryCatch