R S4 классы с одинаковыми именами из разных пакетов - PullRequest
0 голосов
/ 17 марта 2020

Предположим, что есть два пакета.

Package_A имеет этот класс:

setClass("Person", 
         slots = c(
           name = "character", 
           age = "numeric"
         )
)

setGeneric("age", function(x) standardGeneric("age"))
setMethod("age", "Person", function(x) x@age)

Package_B имеет похожий класс:

setClass("Person", 
         slots = c(
           name = "character", 
           age = "numeric"
         )
)

setGeneric("age", function(x) standardGeneric("age"))
setMethod("age", "Person", function(x) x@age * 10) # notice the difference here

Таким образом, пользователь загрузил оба пакеты в их рабочей среде:

library(Package_A)
library(Package_B)

Как в рабочей среде этого пользователя R разрешает путаницу при создании объекта "Person":

john <- new("Person", name = "John Smith", age = 7)

В рабочей среде этого пользователя как R решает вызов правильного метода:

age(john)
...