2015-04-26 35 views
0

我有一個包含許多.matrix文件的zip文件夾,需要將它們加載到R中進行系列化。 目前我使用的函數read.table每個.matrix文件,但我收到了是在R中加載.matrix文件

1010而不是1 0 1 0

Sample . matrix file : 
==> 01-ki-5x7.gt.matrix <== 
0101110 
1010000 
1010011 
0101010 
1000101 
+0

沒有看到幾行文件,很難提供任何援助....你可以發佈'readLines(「yourfile」,n = 5) '或者類似的東西,以便我們瞭解您正在使用的是什麼? – A5C1D2H2I1M1N2O1R2T1

+0

==> 0,1,-ki-5x7.gt.matrix <== 0,1,0,1,1,1,0 1,0,1,0,0,0,0 1, 0,1,0,0,1,1 0,1,0,1,0,1,0 1,0,0,0,1,0,1 –

+0

請使用您的問題下的「編輯」鏈接並使用正確的格式設置文本。很難看到我們正在處理的評論。 – A5C1D2H2I1M1N2O1R2T1

回答

0

假設你已經在使用readLinesscan讀取數據並結束了類似:

x <- c("0101110", "1010000", "1010011", "0101010", "1000101") 

您可以使用類似的東西轉換成


您可能還可以得到多一點的速度出來的東西,如:

t(vapply(strsplit(x, "", TRUE), as.numeric, numeric(nchar(x[1])))) 

或者,你可以嘗試從「readr」包read_fwf(可以使用read.fwf也是如此,但我總是發現它很慢)。該方法可能是這樣的:

library(readr) 
read_fwf("yourfile", fwf_widths(rep(1, nchar(readLines("yourfile", n = 1))))) 
# Source: local data frame [5 x 7] 
# 
# X1 X2 X3 X4 X5 X6 X7 
# 1 0 1 0 1 1 1 0 
# 2 1 0 1 0 0 0 0 
# 3 1 0 1 0 0 1 1 
# 4 0 1 0 1 0 1 0 
# 5 1 0 0 0 1 0 1 
library(readr) 
read_fwf("yourfile", fwf_widths(rep(1, nchar(readLines("yourfile", n = 1))))) 
# Source: local data frame [5 x 7] 
# 
# X1 X2 X3 X4 X5 X6 X7 
# 1 0 1 0 1 1 1 0 
# 2 1 0 1 0 0 0 0 
# 3 1 0 1 0 0 1 1 
# 4 0 1 0 1 0 1 0 
# 5 1 0 0 0 1 0 1 
+0

我仍然收到一個錯誤'錯誤在vapply(strsplit(m2,「」,TRUE)as.numeric ,數值(nchar(x [1]))): 值必須是長度3, 但FUN(X [[1]])的結果是長度爲6' –

+0

@CK,嘗試'numeric(nchar(m2 [1] ))'而不是。 – A5C1D2H2I1M1N2O1R2T1

+0

我得到一個錯誤的輸出'[1] 0 0 0 0 0 0' –