繁体   English   中英

解析和(取消)转义引号

[英]Deparse and (un)escape quotes

我有以下清单:

lst <- list(a = "", b = 2)

并想将其解析为文本:

> deparse(lst, width.cutoff = 100)
[1] "structure(list(a = \"\", b = \"\"), .Names = c(\"a\", \"b\"))"

然后我想将文本作为代码运行(在控制台中):

> structure(list(a = \"\", b = \"\"), .Names = c(\"a\", \"b\"))
Error: unexpected input in "structure(list(a = \"

我知道它失败了,因为反斜杠:(没有它们,它显然有效)。

structure(list(a = "", b = ""), .Names = c("a", "b"))

题:

如何避免创建反斜杠?

我试过的:

我通过了给定的参数。 反引号看起来像一个候选人,但没有奏效。 使用 gsub 来替换它们是一个候选者,但我猜想弄脏了,..

工具:

R 3.4.3 工作室 1.1.447

更新:升级到 3.6 - 类似问题。

> lst <- list(a = "", b = 2)
> deparse(lst, width.cutoff = 100)
[1] "list(a = \"\", b = 2)"
> list(a = \"\", b = 2)
Error: unexpected input in "list(a = \"

有几种方法可以修改行为。 一种方法是在控制台上使用cat打印,复制并粘贴(使用R 3.6.0

out <- deparse(lst, width.cutoff = 100)
cat(out, sep="\n")
#list(a = "", b = 2)
list(a = "", b = 2)
#$a
#[1] ""

#$b
#[1] 2

请注意,如果需要将输出写入某个文件并稍后使用,则cat也有一个file参数


或使用gsub删除"并替换为单引号 ( ' )

out1 <- gsub('"', "'", out)
out1
#[1] "list(a = '', b = 2)"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM