簡體   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