Найдите используемый метод для функций оболочки R - PullRequest
0 голосов
/ 03 октября 2019

Я смотрю на этот вопрос: Что означает здесь использование метода? .

Я пытаюсь сделать то же самое для XML :: read_xml

read_xml
(ms <- methods("read_xml"))

Вывод:

[1] read_xml.character*  read_xml.connection*
[3] read_xml.raw*        read_xml.response* 

Как узнать, какой из четырех брать? И что более важно, как решает вызов use_methods("read_xml")?

1 Ответ

2 голосов
/ 03 октября 2019

Вам не нужно брать ни один из четырех. Когда вы вызываете read_xml, функция просматривает класс первого аргумента (в данном случае x) (например, строку символов, соединение) и вызывает функцию для этого класса. По сути, когда вы делаете read_xml(x), функция вызывает read_xml.[class(x)](x).

Если аргумент имеет более одного класса, UseMethods будет циклически перебирать все классы, от первого до последнего, пока if не найдет одинс методом. Некоторые функции могут также иметь метод default, который используется, если не найден другой, более конкретный метод. read_xml, как видите, его нет. Если вы попытаетесь использовать read_xml с первым аргументом, скажем, числовым, вы получите эту ошибку из UseMethod:

Error in UseMethod("read_xml") : 
  no applicable method for 'read_xml' applied to an object of class "c('double', 'numeric')"

Как отмечено в вопросе, на который вы ссылались, вы можете увидетькод для определенных функций класса с использованием getAnywhere.

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