читать CSV-файл с кратной матрицей - PullRequest
1 голос
/ 02 мая 2019

У меня есть CSV-файл, который содержит много матриц. Например,

 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

Все матрицы разделены пустой строкой.

Я хочу импортировать эти две матрицы в файл матрицы за один раз. некоторый код, подобный этому

my_data <- read.csv("file.csv",head=TRUE, row.names =1 )
my_matrix <-as.matrix(my_data)

Однако я могу импортировать только одну матрицу за один раз. Подскажите пожалуйста, как импортировать две матрицы в файл матрицы за один раз.

1 Ответ

0 голосов
/ 02 мая 2019

Это делает только одно физическое чтение файла, а затем извлекает две матрицы из того, что он прочитал.Используя файл, созданный в примечании в конце, прочитайте его в 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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...