Атрибуты () - это функция в R? - PullRequest
0 голосов
/ 13 января 2019

Файлы справки вызывают attributes() функцию. Его синтаксис выглядит как вызов функции. Даже class(attributes) называет это функцией.

Но я вижу, что могу присвоить что-то attributes(myobject), что кажется необычным. Например, я не могу ничего присвоить log(myobject).

Так как же правильно называть "функции", такие как attributes()? Есть ли другие примеры этого? Как вы отличаете их от обычных функций? (Кроме попытки supposedfunction(x)<-0, то есть.)

Наконец, я думаю, реализация attributes() переопределяет оператор присваивания, чтобы стать местом назначения для присваиваний. Я прав? Есть ли полезное руководство о том, как это сделать?

1 Ответ

0 голосов
/ 13 января 2019

Очень хорошее наблюдение. Это пример функции замены , если вы внимательно посмотрите и наберете apropos('attributes') в консоли R, она вернет

 "attributes"                        
 "attributes<-"  

вместе с другими выходами.

Итак, в основном, место, где вы можете назначить левый знак оператора присваивания, вы не вызываете attributes, вы на самом деле вызываете attributes<-, в R есть много функций, например, таких: names(), colnames(), length() и т. Д. В вашем примере log не имеет заменяющего аналога, следовательно, он не работает так, как вы ожидали.

Definiton (из расширенной ссылки на книгу R, приведенной ниже):

Функции замены действуют так, как будто они изменяют свои аргументы на месте, и иметь специальное имя ххх <-. У них обычно есть два аргумента (х и ценность), хотя они могут иметь больше, и они должны вернуть модифицированный объект </p>

Если вы хотите увидеть список этих функций, вы можете сделать: apropos('<-$') и вы можете проверить похожие функции, которые имеют аналогичные свойства.

Вы можете прочитать об этом здесь и здесь

Я надеюсь, что это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...