我有一个有多行的txt文件.每行作为由空格分隔的文本.每行中的列数可能不同.我需要一次读取一行,将其放入数据框并打印出来.
我试过这个:
x<-readLines("output.txt")
for (i in 2:length(x) ) {
data<-data.frame(x[[i]])
print(data)
}
Run Code Online (Sandbox Code Playgroud)
我必须从第2行开始,因为第1行有一些我不需要的标题信息.
例如,这打印出如下内容:
x[[2]]
[1] " dcserver AIX 2254438400 587317248 026.05 93752=100.00 HDS93752_VMAX1561_RAID1=100.00 "
Run Code Online (Sandbox Code Playgroud)
当我这样做:
data<-data.frame(x[[2]])
Run Code Online (Sandbox Code Playgroud)
我明白了:
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")
Run Code Online (Sandbox Code Playgroud)
看起来我有一行一列,我需要有7列,如下所示:
dcserver AIX 2254438400 587317248 026.05 93752=100.00 HDS93752_VMAX1561_RAID1=100.00
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
您可以使用以下功能:textConnection
和read.table
.
x<-readLines("output.txt")
for (i in 2:length(x) ) {
data<-read.table(textConnection(x[[i]]))
print(data)
}
Run Code Online (Sandbox Code Playgroud)
我确信有更好的方法,但我已经尝试过并且它对我有用:
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)
}
Run Code Online (Sandbox Code Playgroud)