R: чтение файла с пустыми строками в разные data.frames - PullRequest
0 голосов
/ 15 мая 2018

Я получил таблицу с пустыми строками в виде разделителей .

Примерно так

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 голосов
/ 15 мая 2018

С помощью другого решения здесь при переполнении стека я сделал это. В этом случае каждая «таблица» может иметь различное количество столбцов, как показано в третьей таблице в моем примере.

Я чувствую, что это может быть более эффективным, поэтому предложения приветствуются.

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
0 голосов
/ 15 мая 2018

Прочитать весь файл.Затем отфильтруйте первый столбец с grepl.Это даст вам отдельные файлы на основе символов в первом столбце.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...