首页 > 解决方案 > R:将带有空行的文件读入不同的data.frames

问题描述

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

像这样的东西

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;一个在第一列中有C​​1、C2 )?

编辑:我无法通过第 1 列或第 2 列来判断条目所属的位置。所以我无法读取整个文件并稍后将其拆分。

标签: r

解决方案


在堆栈溢出的另一个解决方案的帮助下,我做了这个。在这种情况下,每个“表”可以有不同数量的列,如我的示例中的第三个表所示。

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

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

推荐阅读