Вам не нужно брать ни один из четырех. Когда вы вызываете 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
.