如何将输出从readLines转换为R中的数据帧

时间:2015-04-27 14:56:38

标签: r

我有一个包含多行的txt文件。每行作为由空格分隔的文本。每行中的列数可能不同。我需要一次读取一行,将其放入数据框并打印出来。

我试过了:

x<-readLines("output.txt")


for (i in 2:length(x) ) {
  data<-data.frame(x[[i]])
  print(data)
}

我必须从第2行开始,因为第1行有一些我不需要的标题信息。

例如,这打印出如下内容:

x[[2]]
[1] "                              dcserver        AIX      2254438400       587317248   026.05   93752=100.00  HDS93752_VMAX1561_RAID1=100.00 "

当我这样做时:

data<-data.frame(x[[2]])

我明白了:

dput(data)

structure(list(x..2.. = structure(1L, .Label = "                              dcserver        AIX      2254438400       587317248   026.05   93752=100.00  HDS93752_VMAX1561_RAID1=100.00 ", class = "factor")), .Names = "x..2..", row.names = c(NA, 
-1L), class = "data.frame")

看起来我有一行一列,我需要有7列,如下所示:

dcserver        AIX      2254438400       587317248   026.05   93752=100.00  HDS93752_VMAX1561_RAID1=100.00

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

您可以使用以下功能:textConnectionread.table

x<-readLines("output.txt")

for (i in 2:length(x) ) {
  data<-read.table(textConnection(x[[i]]))
  print(data)
}

答案 1 :(得分:1)

我确信有更好的方法,但我尝试了这个,它对我有用:

x<-readLines("output1.txt")

for (i in 2:length(x) ) {
  x<-data.frame(x[[i]])
  writeLines(x[[i]],"test.csv")
  data<-read.csv("test.csv", header=F, sep=" ")
  df<-data[,colSums(is.na(data)) == 0]
  print(df)
}