首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么在R中“优先于‘”

为什么在R中“优先于‘”
EN

Stack Overflow用户
提问于 2012-11-30 10:22:14
回答 4查看 344关注 0票数 18

来自help("'")

的单引号和双引号分隔字符常量。它们可以互换使用,但最好使用双引号(并且使用双引号打印字符常量),因此单引号通常仅用于分隔包含双引号的字符常量。

如果它们是可互换的,为什么首选双引号?我还没有发现它们在我自己的用法上有什么不同。特别令人惊讶的是,混合字符向量是允许的:

> c("a",'b',"c")
[1] "a" "b" "c"

编辑

我想,我真的要问两个问题:

  1. 是否存在'"行为不一致的情况,为什么按照惯例选择"作为首选版本?

到目前为止,答案都与(2)有关,但(1)至少是同样有趣的。

EN

回答 4

Stack Overflow用户

发布于 2012-11-30 10:44:45

我不知道单引号和双引号有什么不同。我认为这种偏好是由于可读性,并避免潜在的单引号与反引号的混淆,这是不同的处理方式。湿器中的眼睛-大脑系统可能很难识别与单个引号配对的不匹配的反刻度。

> `newfn` <- function() {}
> newfn
function() {}
> "newfn" <- function() {}
> newfn
function() {}
> 'newfn' <- function() {}
> newfn
function() {}
> var <- c(`a`, "b", 'c')
Error: object 'a' not found
> var <- c( "b", 'c')
> var
[1] "b" "c"
> a <- 1
> identical(`a`, a)
[1] TRUE

因此,对于名称赋值,它们(s引号、d引号和反引号)在来自function的赋值的LHS上都得到了相同的处理,但是在命令行上,未带引号的a和带反引号的a是相同的,并且不同于带引号的"a“或”a“。

另一种可能存在差异的情况是在数据输入方面。人名可能有单引号,在这种情况下,您可能需要查看read.table函数对这两种不同类型引号的处理。默认情况下,它使用这两种类型的引号,但可能有必要通过设置quote="\""来“关闭”单引号的引号操作,这样您就不会错误地将大量数据转换为单个文本字段。count.fields函数具有与read.table相同的默认值,因此使用此函数进行初步运行以检查由不匹配的单引号引起的缩短行是有意义的:

 table( count.fields('filnam.ext') )
票数 12
EN

Stack Overflow用户

发布于 2012-11-30 10:26:19

我的猜测是,“单引号”更多地作为撇号出现,所以更喜欢使用双引号将减少用撇号把事情搞乱的机会。

票数 7
EN

Stack Overflow用户

发布于 2012-11-30 20:14:35

关于第一个问题,是否存在‘和’行为不同的情况?我认为重要的是要注意到

identical("a", 'a')
TRUE

R用户(包括包开发人员)无法区分,因此无法为其中之一创建不同的行为。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13638123

复制
相关文章

相似问题

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