我在R中有一個因子矩陣,並希望將它轉換爲虛擬變量矩陣0-1,以表示每個因子的所有可能級別。R:稀疏矩陣轉換
然而,這個「虛擬」矩陣非常大(91690x16593)並且非常稀疏。我需要將它存儲在一個稀疏矩陣中,否則它不適合我的12GB內存。
目前,我使用下面的代碼,它工作得很好,只需要幾秒鐘:
library(Matrix)
X_factors <- data.frame(lapply(my_matrix, as.factor))
#encode factor data in a sparse matrix
X <- sparse.model.matrix(~.-1, data = X_factors)
不過,我想用在R上的e1071包,並最終拯救這個矩陣LIBSVM格式write.matrix.csr()
,所以首先我需要將我的稀疏矩陣轉換爲格式的SparseM格式。
我試圖做的:
library(SparseM)
X2 <- as.matrix.csr(X)
,但它很快就填滿了我的RAM,並最終[R崩潰。我懷疑在內部,as.matrix.csr
首先將稀疏矩陣轉換爲不適合我的計算機內存的稠密矩陣。
我的另一種選擇是直接用SparseM格式創建我的稀疏矩陣。我試過as.matrix.csr(X_factors)
但它不接受一個數據幀的因素。
SparseM軟件包中是否有相當於sparse.model.matrix(~.-1, data = X_factors)
?我在文檔中搜索,但我沒有找到。
它的工作完美。感謝您的快速回答。 –