Прочитать текстовый файл с переменным количеством столбцов в списке - PullRequest
15 голосов
/ 30 января 2011

У меня есть такой файл:

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

Ответы [ 3 ]

19 голосов
/ 30 января 2011

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

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

РЕДАКТИРОВАТЬ:

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

mylist.txt
234984   10354   41175 932711      426928
1693237               13462

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

EDIT # 2

И поскольку strsplit возвращает строки, вам необходимо преобразовать данные в числовые (этолегко):

mylist <- lapply(mylist, as.numeric)
2 голосов
/ 30 января 2011

Возможный ответ - сначала прочитать список, заполненный 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)] )

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

1 голос
/ 30 января 2011

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

    lapply(l, function(x)x[!is.na(x)])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...