真的是很棘手的敵人。
幸虧已經有許多人研究、提出了一些解決辦法。比如說 R 的 Matrix 套件。
了解格式
比較推薦使用的是 MatrixMarket 格式。
5 5 8 1 1 1.000e+00 2 2 1.050e+01 3 3 1.500e-02
第一行記錄的分別是 rows, columns, entries (列、行、總數)。接著每一列表示每一個 entry。可加入註解,行首以 % 標示,放在檔案的開頭處。更詳細的說明可以見此網頁。
建立 sparse matrix
可參考底下的範例,試著在 R 重複一遍(鍵入 ?sparseMatrix 查更多說明)。
i <- c(1,3:8); j <- c(2,9,6:10); x <- 7 * (1:7) (A <- sparseMatrix(i, j, x = x))
輸出結果
8 x 10 sparse Matrix of class "dgCMatrix" [1,] . 7 . . . . . . . . [2,] . . . . . . . . . . [3,] . . . . . . . . 14 . [4,] . . . . . 21 . . . . [5,] . . . . . . 28 . . . [6,] . . . . . . . 35 . . [7,] . . . . . . . . 42 . [8,] . . . . . . . . . 49
讀、寫外部 sparse matrix
我們可以藉著
read.table()
讀入 MatrixMarket 格式的檔案,再利用 sparseMatrix()
製作 sparse matrix。筆者相信應該還有更好的方法,讀者可以自行嘗試其他指令。底下的範例亦僅供參考。讀
dd <- read.table("D:/test.mtx", header=FALSE) mm <- sparseMatrix(i = dd$i, j = dd$j, x = dd$x, dims=c(row_dim,col_dim))
寫
如果你已經擁有了一個 sparse matrix,使用
writeMM()
可以幫您輸出成為外部檔案data(KNex) writeMM(KNex$mm, "mmMM.mtx")
這部份可鍵入 ?readMM 看更多說明。
0 意見:
張貼留言
嗨,我是 Seyna。歡迎您的留言 :)