我有一个包含多行的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
有什么想法吗?
答案 0 :(得分:5)
您可以使用以下功能:textConnection
和read.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)
}