R:用空行读取文件到不同的data.frames

时间:2018-05-15 06:26:05

标签: r

我已经获得了一个空行作为分隔符的表格。

像这样的东西

A    45
B    54
C    5

D    4
E    96
F    0
G    12

H    154
I    3

有没有办法将这个文件读入单独的data.frames(第一列中有A1,A2,A3;第一列中有B1,B2,B3,B4;第二列有C1,C2)第一栏)?

编辑:我无法通过第1列或第2列告诉您条目所属的位置。所以我无法读取整个文件并在以后拆分。

2 个答案:

答案 0 :(得分:1)

another solution的帮助下堆栈溢出,我做了这个。在这种情况下,每个"表"可以有不同数量的列,如我的示例中的第三个表中所示。

我觉得它可以更有效率,所以欢迎提出建议。

tab <- textConnection("A    45
B    54
C    5

D    4
E    96
F    0
G    12

H    154    354
I    3      489
")

tablines <- trimws(readLines(tab))

split.vec <- function(vec, sep = 0) {
  is.sep <- vec == sep
  split(vec[!is.sep], cumsum(is.sep)[!is.sep])
}

splittablines <- split.vec(tablines, sep = "")

lapply(splittablines, function(x) read.table(textConnection(paste(x, collapse = "\n"))))

结果:

$`0`
V1 V2
1  A 45
2  B 54
3  C  5

$`1`
V1 V2
1  D  4
2  E 96
3  F  0
4  G 12

$`2`
V1  V2  V3
1  H 154 354
2  I   3 489

答案 1 :(得分:0)

阅读整个文件。 然后使用grepl过滤第一列。这将根据第一列中的字符为您提供单独的文件。