如何将readLines输出拆分为文本数组R

How to split readLines output into text array R

提问人:user8229029 提问时间:6/20/2023 最后编辑:user8229029 更新时间:6/22/2023 访问量:35

问:

我正在使用 readLines 读取 csv 文件的前 4 行,以确定标题是什么,以便我可以将具有相似标题的文件连接起来。readLines 生成如下所示的困难输出(这只是第一行作为示例):

output <- readLines(one_min_file, n = 4)

[1] "\"TOA5\",\"Shelton 2SW\",\"CR1000\",\"62704\",\"CR1000.Std.27\",\"CPU:0044-20201101.CR1\",\"35516\",\"OneMinute\""

如何将其解析为文本数组或看起来像这样的东西,或者由此生成的相同数组?

c('TOA5','Shelton 2SW','CR1000','62704','CR1000.Std.27','CPU:0044-20201101.CR1','35516','OneMinute')


EDIT:
dput(readLines(one_min_files[h1], n = 1))
"\"TOA5\",\"Shelton 2SW\",\"CR1000\",\"62704\",\"CR1000.Std.27\",\"CPU:0044-20201101.CR1\",\"35516\",\"OneMinute\""
r csv 文本 读取行

评论

0赞 margusl 6/20/2023
你能包括结果吗?dput(output)
0赞 margusl 6/21/2023
在没有任何手动更改的情况下,对于所有 4 行,即整个事情会更好。虽然你看到的可能只是引用字符串的打印方式。尝试使用未转义的引号打印。c(...)cat(paste(output, collapse = "\n"))stringr::str_view(output)

答:

0赞 margusl 6/21/2023 #1

尝试删除双引号并按以下方式拆分:,

(output <- c("\"TOA5\",\"Shelton 2SW\",\"CR1000\",\"62704\",\"CR1000.Std.27\",\"CPU:0044-20201101.CR1\",\"35516\",\"OneMinute\""))
#> [1] "\"TOA5\",\"Shelton 2SW\",\"CR1000\",\"62704\",\"CR1000.Std.27\",\"CPU:0044-20201101.CR1\",\"35516\",\"OneMinute\""

gsub('"', '', output, fixed = TRUE) |> strsplit(",") |> unlist()
#> [1] "TOA5"                  "Shelton 2SW"           "CR1000"               
#> [4] "62704"                 "CR1000.Std.27"         "CPU:0044-20201101.CR1"
#> [7] "35516"                 "OneMinute"

或者用以下方式解析该行:read.csv()

read.csv(text = output, header = FALSE)[1,] |> unlist() |> unname()
#> [1] "TOA5"                  "Shelton 2SW"           "CR1000"               
#> [4] "62704"                 "CR1000.Std.27"         "CPU:0044-20201101.CR1"
#> [7] "35516"                 "OneMinute"

创建于 2023-06-21 with reprex v2.0.2