什么构成R中的有效符号(标识符)

时间:2015-03-14 12:49:34

标签: r grammar identifier

我找不到该语言的规范...

请注意,我想要一个正确答案,例如比如this,因为我可以很容易地想出一个简单的,但可能是错误的近似值,例如[[:alpha:]._][\w._]*

1 个答案:

答案 0 :(得分:4)

documentation for make.names()

  

语法上有效的名称由字母,数字和点或下划线字符组成,以字母或点开头,后面没有数字。诸如“.2way”之类的名称无效,保留字也不是。

     

字母的定义取决于当前的区域设置,但只有ASCII数字被视为数字。

@Roland指出了R language definition

的这一部分
  

10.3.2标识符

     

标识符由一系列字母,数字,句点('。')和下划线组成。它们不能以数字或下划线开头,也不能以句点后跟数字开头。

     

字母的定义取决于当前的语言环境:允许的精确字符集由C表达式给出(isalnum(c)|| c =='。'|| c =='_')并且将包括许多西欧语言环境中的重音字母。

     

请注意,ls函数默认不列出以句点开头的标识符,并且'。'和'..1','。。2'等是特殊的。

     

另请注意,对象的名称不是标识符。这些通常通过get和assign访问,尽管在没有歧义时(例如“x”< - 1),它们也可以在某些有限的情况下由文本字符串表示。由于get和assign不限于作为标识符的名称,因此它们无法识别下标运算符或替换函数。

规则似乎允许“莫尔斯编码”:

> .__ <- 1
> ._._. <- 2
> .__ + ._._.
[1] 3