问题描述
我有一个固定宽度的字符向量输入,称为“文本”,看起来像这样:
[1] " Report"
[2] "Group ID Name"
[3] "Number"
[4] "AA A134 abcd"
[5] "AB A123 def"
[6] "AC A345 ghikl"
[7] "BA B134 jklmmm"
[8] "AD A987 mn"
我需要创建一个标准的DataFrame。我的方法是先创建一个文本文件,然后使用read.fwf函数从固定宽度的文本文件输入中创建一个干净的DataFrame。我的工作正常,但是它迫使我在工作目录中创建一个文本文件,然后以fwf的形式读回它:
> cat(text,file = "mytextfile",sep = "\n",append = TRUE)
> read.fwf("mytextfile",skip = 3,widths = c(12,14,20))
是否可以在不将中间输出保存到我的工作目录的情况下获得相同的结果?我尝试使用paste()和capture.output()失败。虽然
x = paste(text,collapse = "\n")
一开始似乎起作用,但是当我将其传递给
时read.fwf(x,20))
我知道了
Error in file(file,"rt") : cannot open the connection
In addition: Warning Message:
In file(file,"rt") : cannot open file '
和capture.output()让我回到一个平方,一个字符向量。任何意见是极大的赞赏。谢谢。
解决方法
您可以使用textConnection
在read.fwf
中以文本形式读取文件并提供宽度。
data <- read.fwf(textConnection(text),widths = c(12,14,20),strip.white = TRUE,skip = 3)
data
# V1 V2 V3
#1 AA A134 abcd
#2 AB A123 def
#3 AC A345 ghikl
#4 BA B134 jklmmm
#5 AD A987 mn
数据
text <- c(" Report","Group ID Name","Number","AA A134 abcd","AB A123 def","AC A345 ghikl","BA B134 jklmmm","AD A987 mn")