R 3.4.4和R 3.5中的deparse不同的结果

时间:2018-05-19 06:52:45

标签: r

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)

2 个答案:

答案 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\")"