如何从 R 中的固定宽度字符向量输入中创建具有单独列的 DataFrame?
How can I create a DataFrame with separate columns from a fixed width character vector input in R?
我有一个名为“文本”的固定宽度字符向量输入,看起来像这样:
[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, skip = 3, widths = c(12, 14, 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")
我有一个名为“文本”的固定宽度字符向量输入,看起来像这样:
[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, skip = 3, widths = c(12, 14, 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")