deparse
在R 3.4.4和R 3.5中产生不同的结果。 NEWS表示某些默认设置已更改,但我不清楚如何确保deparse
在R 3.4.4和R 3.5中生成相同的输出
R 3.4.4
> deparse(list(dec = 4L, b = "a"), control = "keepNA")
[1] "list(dec = 4, b = \"a\")"
R 3.5
> deparse(list(dec = 4L, b = "a"), control = "keepNA")
[1] "list(4, \"a\")"
编辑:
感谢@HongOoi和@akrun的有用建议,最接近解决方案的是确保R 3.4.4和R 3.5中的相同结果似乎是:
dctrl <- if (getRversion() > "3.4.4") c("keepNA", "niceNames") else "keepNA"
deparse(list(dec = 4L, b = "a"), control = dctrl)
答案 0 :(得分:4)
我没有安装R 3.5,但根据NEWS文件,您可以尝试showAttributes
的{{1}}和/或niceNames
参数:
这些功能获得了一个新的控制选项&#34; niceNames&#34; (参见.deparseOpts()),设置时(默认情况下)也使用原子向量的(tag = value)语法。另一方面,没有deparse选项&#34; showAttributes&#34;和&#34; niceNames&#34;,列表也不再显示名称。 as.character(list(c(one = 1)))现在包含名称,因为as.character(list(list(one = 1)))总是这样做。
答案 1 :(得分:2)
我们可以使用substitute
中的R 3.5
来获得与R 3.4.4
中相同的结果
deparse(substitute(list(dec = 4L, b = "a")), control = "keepNA")
#[1] "list(dec = 4, b = \"a\")"