[英]how do you convert output from readLines to data frame in 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
有任何想法吗?
您可以使用以下函数: textConnection
和read.table
。
x<-readLines("output.txt")
for (i in 2:length(x) ) {
data<-read.table(textConnection(x[[i]]))
print(data)
}
我相信有更好的方法,但我尝试了这个,它对我有用:
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)
}
如果您的原始文件是 csv,则一旦您读取线..
x=readLines("file.csv")
您可以使用 read.csv
Df=read.csv (x)
或者,如果您想要一个 data.table 您可以使用
Df=fread (x, sep=",")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.