R中的变量名称限制

Kyl*_*ndt 45 r r-faq

对R中的变量名可以使用哪些字符(以及其他限制)有什么限制?

(这个一般参考的尖叫,但我似乎无法找到答案)

jor*_*ran 35

您可能正在寻找以下讨论?make.names:

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

在帮助文件本身中,有一个指向保留字列表的链接,它们是:

if else在下一次休息时重复执行功能

TRUE FALSE NULL Inf NaN NA NA_integer_ NA_real_ NA_complex_ NA_character_

评论中的许多其他好的注释包括James对R问题解决这个问题的观点以及Josh 关于检查语法有效名称的相关SO 问题的指针.

  • @skan通常是为了避免与变量的通用名称,数据框的列或传递给不同方法或其他函数的其他参数发生名称冲突。 (2认同)

Spa*_*man 24

几乎没有!您可以使用'assign'来制作荒谬的变量名称:

assign("1",99)
ls()
# [1] "1"
Run Code Online (Sandbox Code Playgroud)

是的,这是一个名为'1'的变量.数字1.幸运的是它不会改变整数1的值,你必须稍微努力才能获得它的值:

1
# [1] 1
get("1")
# [1] 99
Run Code Online (Sandbox Code Playgroud)

一些人可能会提到的"语法限制"纯粹是由解析器强加的.从根本上说,你几乎无法调用R对象.你不能通过'< - '赋值运算符来完成它."get"会让你自由:)

  • 我相信这句话是"足以让自己挂起来":-P (14认同)
  • 你不需要`get()`,反引号引用它会引用它:```````` (5认同)
  • @joran你可以开始慢慢下降到疯狂:`assign("get",ls)` (4认同)
  • @joran - 来自`?name`,"名称限制为10,000个字节(在2.13.0之前的R版本中为256个字节).",所以至少有一个限制! (2认同)

Sta*_*t-R 6

以下内容可能不会直接解决您的问题,但会有很大帮助。尝试exists()命令以查看是否已经存在某些内容,这样您就知道不应将系统名称用于变量或函数。例...

   > exists('for')
   [1] TRUE

   >exists('myvariable')
   [1] FALSE
Run Code Online (Sandbox Code Playgroud)