Как подсчитать количество объектов, связанных с классом S4 - PullRequest
4 голосов
/ 19 сентября 2019

У меня есть программа, которая хотела бы сослаться на количество объектов, созданных в классе «ведро».Как я могу посчитать количество объектов, созданных в этом классе?Ниже приведена строка создателя класса.

setClass("bucket", 
         slots = list(elements = c("character"), 
                      targets = c("numeric"), 
                      type = "numeric", 
                      uncert_Dist = "numeric", 
                      ranking = c("numeric"), 
                      confidence_Int = "numeric", 
                      wildcard = "numeric"))

Ответы [ 2 ]

2 голосов
/ 19 сентября 2019

Чтобы перечислить класс всех объектов, вы можете использовать

sapply(mget(ls()), class)

Для подсчета количества классов == 'bucket'

sum(sapply(mget(ls()), inherits, 'bucket'))
1 голос
/ 26 сентября 2019

Вероятно, наиболее подходящий способ сделать это (который хорошо сочетался бы с другими функциями в R и был бы достаточно интуитивно понятен) - это определить метод для length (который является внутренней универсальной функцией, поэтому вы можете написать S4методы для этого).

setMethod(
  "length",
  signature(x="bucket"),
  function(x) length(x@elements)
)

Тогда, если у вас есть объект корзины z, вы просто вызываете length(z), чтобы узнать количество вещей в нем (точно так же, как вы вызываете length в любомдругой контекст).

...