首页 > 解决方案 > 属性()是R中的函数吗?

问题描述

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

但我看到我可以为 分配一些东西attributes(myobject),这似乎很不寻常。例如,我不能将任何东西分配给log(myobject).

那么“函数”的正确名称是attributes()什么?还有其他例子吗?除了常规功能之外,您如何区分它们?(除了尝试之外supposedfunction(x)<-0,就是这样。)

最后,我猜想attributes()实现会覆盖赋值运算符,以便成为赋值的目的地。我对吗?有没有关于如何做到这一点的有用指南?

标签: r

解决方案


很好的观察 确实。这是一个替换函数的例子,如果你仔细观察并apropos('attributes')在你的 R 控制台中输入,它会返回

 "attributes"                        
 "attributes<-"  

连同其他输出。

所以,基本上你可以在赋值运算符的左边符号上赋值的地方,你不是在调用attributes,你实际上是在调用attributes<-,R中有很多这样的函数,例如:names(), colnames(), length()等等。在你的例子log中没有任何替换对应物,因此它不能按您预期的方式工作。

定义(来自下面给出的高级 R 书链接):

替换函数的行为就像它们修改了它们的参数一样,并且具有特殊的名称 xxx<-。它们通常有两个参数(x 和 value),尽管它们可以有更多,并且它们必须返回修改后的对象

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

你可以在这里这里阅读

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


推荐阅读