从单列文本文件中读取 R 中的数据

the*_*413 2 import r read.table

我的名为 myfile.txt 的文件设置如下:

Column1
Column2
Column3
...
Column10
Row1
1
2
3
4
Row2
5
6
7
8
...
Run Code Online (Sandbox Code Playgroud)

行数最终达到 100,我在使用 read.table 命令时遇到了问题。我不是一个有经验的 R 用户,所以我只需要弄清楚并完成它。

我认为 col.names 看起来像:

read.table("myfile.txt", col.names = 1:10)
Run Code Online (Sandbox Code Playgroud)

但这没有用

Sve*_*ein 5

一个例子myfile.txt

Column1
Column2
Column3
Column4
Row1
1
2
3
4
Row2
5
6
7
8
Run Code Online (Sandbox Code Playgroud)

读取文件并创建一个矩阵:

lin <- scan("myfile.txt", "") # read lines

lin2 <- grep("Column|Row", lin, value = TRUE, invert = TRUE) # values

matrix(as.numeric(lin2), ncol = sum(grepl("Column", lin)), byrow = TRUE)
  # create matrix

     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8
Run Code Online (Sandbox Code Playgroud)

如果第一行未命名Column...但包含实际的列名称,您可以使用以下方法:

lin <- scan("myfile.txt", "") # read lines

idx <- grep("^Row", lin) # index of lines containing 'Row'

lin2 <- lin[-(c(seq(1, idx[1] - 1), idx))] # actual values

matrix(as.numeric(lin2), nrow = length(idx), 
       dimnames = list(NULL, lin[seq(1, idx[1] - 1)]), byrow = TRUE)

      Column1 Column2 Column3 Column4
 [1,]       1       2       3       4
 [2,]       5       6       7       8
Run Code Online (Sandbox Code Playgroud)