繁体   English   中英

你如何将 output 从 readLines 转换为 R 中的数据帧

[英]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

有任何想法吗?

您可以使用以下函数: textConnectionread.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM