在R中,attributes()是函数吗?

时间:2019-01-13 06:20:06

标签: r

帮助文件调用attributes()一个函数。它的语法看起来像一个函数调用。甚至class(attributes)都将其称为函数。

但是我看到我可以为attributes(myobject)分配一些东西,这似乎很不正常。例如,我无法为log(myobject)分配任何内容。

那么attributes()之类的“功能”的专有名称是什么?还有其他例子吗?除了常规功能,您如何告诉他们? (也就是说,除了尝试supposedfunction(x)<-0之外。)

最后,我猜想attributes()的实现会覆盖赋值运算符,以便成为赋值的目的地。我对吗?是否有任何可用的操作指南?

1 个答案:

答案 0 :(得分:4)

非常好的观察确实。这是替换功能的示例,如果您仔细查看并在R控制台中键入apropos('attributes'),它将返回

 "attributes"                        
 "attributes<-"  

以及其他输出。

因此,基本上,您可以在赋值运算符的左侧符号上进行赋值的位置,您没有在调用attributes,实际上是在调用attributes<-,R中有很多这样的函数例如:names(), colnames(), length()等。在您的示例中,log没有替代品,因此无法按您预期的方式运行。

定义(来自下面提供的高级R图书链接):

  

替换函数的行为就像它们在适当位置修改其参数一样,   并具有特殊名称xxx <-。它们通常有两个参数(x   和价值),尽管他们可以拥有更多,而且他们必须返回   修改后的对象

如果要查看这些功能的列表,可以执行以下操作: apropos('<-$'),您可以签出具有相似属性的相似功能。

您可以阅读有关herehere的信息

我希望这可以解决您的问题。