首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >R中的数字转义字符行为不一致

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

Stack Overflow用户
提问于 2019-04-16 05:09:59
回答 1查看 63关注 0票数 4

我无意中遇到了这个问题,想知道这是不是可以解释。在一个玩具示例中,我在变量级别中放置了一个转义字符。

代码语言:javascript
复制
  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?因为我没有显式地编写1\002 (因为\2从技术上讲不是转义字符),r不应该抛出错误吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-16 09:21:22

我只想把@joran的答案说出来一点。当提到octal code时,?Quote确实(某种程度上)在这里给出了原因

具有给定八进制码的

\nnn字符(1、2或3位)

因此,在\后面添加三位八进制码将生成corresponding数字/字符:

代码语言:javascript
复制
> c('\110' ,'\074', '\076') 
 [1] "H" "<" ">" 

因此,当您提供'\002'时,如链接所示,您将获得八进制代码002

此外,R不会要求您为这些八进制码提供前导0。R只是假设您想要包含它们。

代码语言:javascript
复制
 > c('\110' ,'\74', '\76')
 [1] "H" "<" ">" 

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

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

as.octmode()是思考这一点的另一种方式:

转换或打印八进制格式的整数,根据需要使用前导零来显示最大的数字。

代码语言:javascript
复制
 > as.octmode("002")
 [1] "2"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55697294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档