R中的变量名限制
对于R中的变量名可以使用哪些字符(可能还有其他限制),有哪些限制R中的变量名限制,r,r-faq,R,R Faq,对于R中的变量名可以使用哪些字符(可能还有其他限制),有哪些限制 (这是一般性的参考,但我似乎找不到答案)您可能在?make.names中寻找讨论: 语法上有效的名称由字母、数字和点或符号组成 在字符下面划线,并以字母或未后跟的点开头 一个数字。诸如“.2way”之类的名称无效,并且 保留字 在帮助文件本身中,有一个指向保留字列表的链接,这些保留字是: 否则,在下一个中断中重复while函数 TRUE FALSE NULL Inf NaN NA_整数NA_实NA_复数_ 纳乌性格_ 评论中的许多
(这是一般性的参考,但我似乎找不到答案)您可能在
?make.names
中寻找讨论:
语法上有效的名称由字母、数字和点或符号组成
在字符下面划线,并以字母或未后跟的点开头
一个数字。诸如“.2way”之类的名称无效,并且
保留字
在帮助文件本身中,有一个指向保留字列表的链接,这些保留字是:
否则,在下一个中断中重复while函数
TRUE FALSE NULL Inf NaN NA_整数NA_实NA_复数_
纳乌性格_
评论中的许多其他好的注释包括James to提出的解决这个问题的观点,以及Josh指向一个相关SO的指针,该SO用于检查语法有效的名称。几乎没有!您可以使用“赋值”来生成可笑的变量名:
assign("1",99)
ls()
# [1] "1"
是的,这是一个叫做“1”的变量。数字1。幸运的是,它不会改变整数1的值,您必须稍微努力才能得到它的值:
1
# [1] 1
get("1")
# [1] 99
有些人可能提到的“语法限制”纯粹是由解析器强加的。基本上,几乎没有什么东西不能称为R对象。你只是不能通过“来解决这个问题。下面的内容可能不会直接回答你的问题,但会对你有很大帮助。 尝试使用
exists()
命令查看是否已经存在某些内容,这样您就知道不应该为变量或函数使用系统名称。
例如
> exists('for')
[1] TRUE
>exists('myvariable')
[1] FALSE
使用内置基本包中的make.names()函数可能有助于:
is_valid_name<- function(x)
{
length_condition = if(getRversion() < "2.13.0") 256L else 10000L
is_short_enough = nchar(x) <= length_condition
is_valid_name = (make.names(x) == x)
final_condition = is_short_enough && is_valid_name
return(final_condition)
}
是否有效\u nameR常见问题解答7.14:您可能也对此处的讨论感兴趣:您应该在的帮助页中找到指向?make.names
的链接,该链接用于read.table
。我一直难以记住的帮助页面是描述允许转义字符的页面,答案是?Quotes
。R简介,请注意,如果您引用变量名,您可以使用任何东西,例如``TRUE`。当然,我的问题是我在谷歌上搜索反向(“限制”)或者基本上是无效字符,当我应该搜索有效字符时。另外,点本身也是有效的<代码>=3.打印(.)
以点开头的名字是什么意思?我在R软件包中见过很多。@skan这样做通常是为了避免与变量的通用名称、数据帧的列或传递给不同方法或其他函数的其他参数发生名称冲突。我相信这句话是“足够让自己挂起来的绳子”:-P?assign:“对‘name’没有任何限制:它可以是非语法名称(请参阅‘make.names’)。”。这当然是一个谎言:c=paste(rep(字母,10000),collapse=“”);assign(c,123)生成:assign(c,123)中的错误:变量名限制为10000bytes@joran--从?name
,“名称限制为10000字节(在2.13.0之前的R版本中是256字节)。“,所以你至少有一个限制!@joran你可以开始慢慢进入疯狂状态:assign(“get”,ls)
你不需要get()
,倒勾引用这个名字就可以了:`
1``我不明白为什么这个答案被否决了,对我来说,它无论如何都是一条有用的信息。