R变量名:符号/名称还是其他?

R变量名:符号/名称还是其他?,r,variables,R,Variables,通过阅读官方R文档以及一些提供的教程,可以了解到变量名被视为语言对象,即它们是符号或名称 在p。符号查找标题下的R语言定义手册(3.1.1版)第14节是一个简单的示例:“y了解是什么很重要。符号和是。名称是什么。首先,它们实际上是相同的功能。注意 is.symbol # function (x) .Primitive("is.symbol") is.name # function (x) .Primitive("is.symbol") quote(foo) # foo is.name(qu

通过阅读官方R文档以及一些提供的教程,可以了解到变量名被视为语言对象,即它们是符号或名称


在p。符号查找标题下的R语言定义手册(3.1.1版)第14节是一个简单的示例:
“y了解
是什么很重要。符号和
是。名称是什么。首先,它们实际上是相同的功能。注意

is.symbol
# function (x)  .Primitive("is.symbol")
is.name
# function (x)  .Primitive("is.symbol")
quote(foo)
# foo
is.name(quote(foo))
# [1] TRUE
所以符号/名称在R中实际上是相同的。所以这里我只使用
is.name

但也要注意,这些函数正在检查您传入的名称所指向的“对象”是符号还是名称。它们正在查找名称所指向的对象

所以如果你做了

# rm(foo)   make sure it doesn't exist
is.name(foo)
# Error: object 'foo' not found
您会收到一个错误。尽管
foo
本身就是一个名称,但它指向的内容尚未定义。它正在尝试“查找”
foo
的值。请注意

is.symbol
# function (x)  .Primitive("is.symbol")
is.name
# function (x)  .Primitive("is.symbol")
quote(foo)
# foo
is.name(quote(foo))
# [1] TRUE
因此,
quote
将把参数视为一个语言对象,您可以通过这种方式对其进行测试

(foo <- as.name("hello"))
# hello
is.name(foo)
# [1] TRUE

(foo我要提到的是,
is.symbol
is.name
是完全相同的,symbol和name只是同一事物的两个不同表达。啊哈。谢谢,这个解释很有帮助。关于我从R语言定义手册第14页引用的例子:“y@nt54,我确实认为“y是一个指向数值4的符号”比“y是一个符号,4是它的值”更好的描述,但它们基本上是一样的。“指向”关系与R中的“有值”关系并没有什么不同。所以我不知道它是否更准确,但它可能有助于形成一个更好的心理模型来描述正在发生的事情。