gpt4 book ai didi

r - R 中数字转义字符的不一致行为

转载 作者:行者123 更新时间:2023-12-04 10:08:07 27 4
gpt4 key购买 nike

我无意中遇到了这个,想知道是否有解释。在一个玩具示例中,我将转义字符置于变量级别。

  library(dplyr)
library(gt)
mt2 <- mutate(mtcars, cylx = ifelse(cyl == 4, "1\2", "2/3"))

最初我认为当 cyl 为 4 时它会简单地转义 '2'。然而 1\2实际上评估为 1\002 .使用时 View(mt2)您看不到它,但当您尝试打印表格时,它确实评估为特殊字符 gt::gt(mt2) .这将显示在所有打印选项中,但我使用了 gt举个例子。
所以我的问题是为什么 r 假设我想要 1\2评估为 1\002 ? r不应该抛出错误,因为我没有明确写 1\002 (因为 \2 在技术上不是转义字符)?

最佳答案

我只是想稍微整理一下@joran 的回答。 ?Quote当它提到 octal code 时,确实(有点)在这里给出了原因

\nnn character with given octal code (1, 2 or 3 digits)



所以在 \后面加上三位八进制代码将产生 corresponding数字/字符:
> c('\110' ,'\074', '\076') 
[1] "H" "<" ">"

所以当你提供 '\002' ,如链接所示,您将获得八进制代码 002 .

此外,R 不会要求您为这些八进制代码提供前导 0。 R 只是假设您打算包含它们。
 > c('\110' ,'\74', '\76')
[1] "H" "<" ">"

> '\2' == '\002'
[1] TRUE

> '\2' == '\02'
[1] TRUE
as.octmode()是另一种思考方式:

Convert or print integers in octal format, with as many digits as are needed to display the largest, using leading zeroes as necessary.


 > as.octmode("002")
[1] "2"

关于r - R 中数字转义字符的不一致行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55697294/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com