微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从R中输入的固定宽度字符向量创建带有单独列的DataFrame?

如何解决如何从R中输入的固定宽度字符向量创建带有单独列的DataFrame?

我有一个固定宽度的字符向量输入,称为“文本”,看起来像这样:

[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()让我回到一个平方,一个字符向量。任何意见是极大的赞赏。谢谢。

解决方法

您可以使用textConnectionread.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")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。