我有一个包含许多.matrix文件的zip文件夹,需要将其加载到R中进行连续处理。 目前我正在为每个.matrix文件使用read.table,但我收到的是
1010而不是1 0 1 0
Sample . matrix file :
==> 01-ki-5x7.gt.matrix <==
0101110
1010000
1010011
0101010
1000101
答案 0 :(得分:0)
假设您已使用readLines
或scan
阅读了数据,最终结果如下:
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