在R中加载.matrix文件

时间:2015-04-26 17:23:28

标签: r

我有一个包含许多.matrix文件的zip文件夹,需要将其加载到R中进行连续处理。 目前我正在为每个.matrix文件使用read.table,但我收到的是

1010而不是1 0 1 0

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

1 个答案:

答案 0 :(得分:0)

假设您已使用readLinesscan阅读了数据,最终结果如下:

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

您可以使用以下内容将其转换为matrix

> t(sapply(strsplit(x, "", TRUE), as.numeric))
     [,1] [,2] [,3] [,4] [,5] [,6] [,7]
[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

您也可以通过以下方式获得更快的速度:

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

或者,您可以在&#34; readr&#34;中尝试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