将带有解析错误的文本块读入 R
Reading blocks of text into R with parsing errors
我正在将我的一个包的函数读取到 R 中,替换一些变量,然后再次保存文件。这是为了规范整个包中函数的命名。
除了一个函数外,代码没有声明任何错误或警告(我还没有测试过函数是否真的有效!)。
问题是解析问题。我已将代码行缩小到以下内容。
我使用了 read_delim,因为 readLines 似乎无法使用引号。
{test <- '
print(paste("Time taken for simulation", i, "is",
SimulationRoundTime,
"minutes. Est time to completion",
round(as.numeric(TimeToCompletion, units = TimeUnit)), #
TimeUnit,
"Est completion time is",
ExpectedCompletionTime))'
}
read_delim(test, delim ="[\n]",
col_names = F, col_types = "c")
为什么read_delim说有3行而不是7行?
我收到的警告信息是
Warning: 4 parsing failures.
row col expected actual file
3 X1 delimiter or quote , literal data
3 X1 delimiter or quote E literal data
3 X1 delimiter or quote , literal data
3 X1 closing quote at end of file literal data
它可能会让人感到困惑,因为 test
并不是真正的分隔文本。也许它与双引号和换行符有关。在任何情况下,您最好使用 stringr::str_split(test, "\n")[[1]]
或 readr::read_lines(test)
(或基本 R 版本)。两者都会 return 这个:
[1] ""
[2] "print(paste(\"Time taken for simulation\", i, \"is\","
[3] " SimulationRoundTime,"
[4] " \"minutes. Est time to completion\","
[5] " round(as.numeric(TimeToCompletion, units = TimeUnit)), #"
[6] " TimeUnit,"
[7] " \"Est completion time is\","
[8] " ExpectedCompletionTime))"
我正在将我的一个包的函数读取到 R 中,替换一些变量,然后再次保存文件。这是为了规范整个包中函数的命名。
除了一个函数外,代码没有声明任何错误或警告(我还没有测试过函数是否真的有效!)。 问题是解析问题。我已将代码行缩小到以下内容。
我使用了 read_delim,因为 readLines 似乎无法使用引号。
{test <- '
print(paste("Time taken for simulation", i, "is",
SimulationRoundTime,
"minutes. Est time to completion",
round(as.numeric(TimeToCompletion, units = TimeUnit)), #
TimeUnit,
"Est completion time is",
ExpectedCompletionTime))'
}
read_delim(test, delim ="[\n]",
col_names = F, col_types = "c")
为什么read_delim说有3行而不是7行?
我收到的警告信息是
Warning: 4 parsing failures.
row col expected actual file
3 X1 delimiter or quote , literal data
3 X1 delimiter or quote E literal data
3 X1 delimiter or quote , literal data
3 X1 closing quote at end of file literal data
它可能会让人感到困惑,因为 test
并不是真正的分隔文本。也许它与双引号和换行符有关。在任何情况下,您最好使用 stringr::str_split(test, "\n")[[1]]
或 readr::read_lines(test)
(或基本 R 版本)。两者都会 return 这个:
[1] ""
[2] "print(paste(\"Time taken for simulation\", i, \"is\","
[3] " SimulationRoundTime,"
[4] " \"minutes. Est time to completion\","
[5] " round(as.numeric(TimeToCompletion, units = TimeUnit)), #"
[6] " TimeUnit,"
[7] " \"Est completion time is\","
[8] " ExpectedCompletionTime))"