Это делает только одно физическое чтение файла, а затем извлекает две матрицы из того, что он прочитал.Используя файл, созданный в примечании в конце, прочитайте его в L
, используя readLines
, а затем найдите индекс разделительной линии ix
.Затем дважды прочитайте символьный вектор L
.
L <- trimws(readLines("myfile.dat"))
ix <- which(nchar(L) == 0)[1]
m1 <- read.table(text = L, nrows = ix-2)
m2 <- read.table(text = L, skip = ix)
. Этот файл читается несколько раз, но код немного короче.
ix >- which(count.fields("myfile.dat") == 0)[1]
m1 <- read.table("myfile.dat", nrows = ix-2)
m2 <- read.table("myfile.dat", skip = ix)
Примечание
Ввод вВоспроизводимая форма:
Lines <- "A B C
A 0 3 4
B 5 0 7
C 7 8 0
A B C D
A 0 3 4 5
B 5 0 7 9
C 7 8 0 5
D 7 8 6 0"
cat(Lines, file = "myfile.dat")