Прочитать текстовый файл с переменным числом столбцов в списке
У меня есть файл вроде этого:
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
Ответы
Ответ 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)])