我有一个文件是这样的:阅读与列的可变数量的文本文件列表
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
我有一个文件是这样的:阅读与列的可变数量的文本文件列表
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
假设空间分隔符:
fc <- file("mylist.txt")
mylist <- strsplit(readLines(fc), " ")
close(fc)
编辑:
如果值是由几个空间(一个/或unconsistent方式),可以匹配定界符正则表达式限定:
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)
一个可能的答案是,首先阅读充满的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)])
我不知道是否有是一个更简单的方法。
您可以通过使用lapply
代替sapply
lapply(l, function(x)x[!is.na(x)])
由于简化第二代线您的示例列表项显示数字之间保留的空格,不清楚您是否希望每行都是长字符串或数字向量。 – 2011-01-30 18:02:00
矢量数字。我不确定它为什么显示空格。无论如何,aL3xa答案似乎工作得很好。 – pms 2011-02-02 11:25:40