r - 解析和(取消)转义引号
问题描述
我有以下列表:
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)"
推荐阅读
- javascript - 不知道如何用js点击执行php函数
- python - 使用 Pandas 计算大型数据帧中第 n 个和第 n-1 个值之间差异的 Pythonic 方法?
- jquery - 用于大字幕的灯箱插件
- javascript - Redux Reducer 使用我上次登录时的数据
- javascript - 如何防止语法扫描我的 react.elements 中的文本?
- swift - 如何让 DispatchQueue() 代码在应用程序退出时进行清理
- java - 如何从 URLClassLoader 缓存服务代码
- python-3.x - 无法将 PostgreSQL 与 Python3.6 连接,但与 Python2.7 使用相同的代码。出乎意料的问题
- ruby-on-rails - Ruby / Rails - 如何通过表单上的关系接受带有has_many的nested_attributes?
- r - 使用 map 和 cbind 来汇总具有两个级别的列表