我找不到该语言的规范...
请注意,我想要一个正确答案,例如比如this,因为我可以很容易地想出一个简单的,但可能是错误的近似值,例如[[:alpha:]._][\w._]*
答案 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