Подтвердить что ты не робот

Прочитать текстовый файл с переменным числом столбцов в списке

У меня есть файл вроде этого:

mylist.txt
234984  10354  41175 932711 426928
1693237   13462

Каждая строка этого файла имеет различное количество элементов, минимум 1 элемент на строку. Я хотел бы прочитать его в следующем списке:

> print(head(mylist,2))
[[1]]
[1] 234984  10354  41175 932711 426928

[[2]]
[1] 1693237   13462
4b9b3361

Ответ 1

Предполагая, что пространство является разделителем:

fc <- file("mylist.txt")
mylist <- strsplit(readLines(fc), " ")
close(fc)

EDIT:

Если значения ограничены несколькими пробелами (an/или несовместимым образом), вы можете сопоставить разделитель с регулярным выражением:

mylist.txt
234984   10354   41175 932711      426928
1693237               13462

fc <- file("mylist.txt")
mylist <- strsplit(readLines(fc), " +")
close(fc)

РЕДАКТИРОВАТЬ № 2

А поскольку strsplit возвращает строки, вам нужно преобразовать ваши данные в числовые (это простой):

mylist <- lapply(mylist, as.numeric)

Ответ 2

Возможный ответ - сначала прочитать список, заполненный NA, а затем удалить их следующим образом:

l<-as.list( as.data.frame( t(read.table("mylist.txt",fill=TRUE,col.names=1:max(count.fields("mylist.txt"))))) )
l<-lapply(l, function(x) x[!is.na(x)] )

Интересно, есть ли более простой способ сделать это.

Ответ 3

Вы можете упростить вторую строку, используя lapply вместо sapply

    lapply(l, function(x)x[!is.na(x)])