如何在R6类中找到对象实例化的名称?

时间:2017-11-18 01:27:00

标签: r class r6

ann <- Person$new("Ann", "black")

在上面的例子中(来自this Introduction),我怎么会得到“ann”?

例如,我需要一个方法ann $ getName,它将返回“ann”。

1 个答案:

答案 0 :(得分:0)

我正在尝试做同样的事情,所以也许我可以澄清这个问题。 (对我来说)目标是给班级用户一些反馈。像这样的东西:

Person <- R6Class("Person",
  public = list(
    name = NULL,
    hair = NULL,
    initialize = function(name = NA, hair = NA) {
      self$name <- name
      self$hair <- hair
       },

    do_something_very_long=function(){
      whoami <- self$getInstanceName() ## $getInstanceName() is the method I need to write !
      message(paste("Please wait, processing object",whoami))
      # Do a very long calculation... 
     }
  )
)

然后我会在脚本中运行类似

的脚本
#File batch_processing.R
first_in_line<-Person$new("Alice","Black")
next_customer<-Person$new("Bob","Red")
VIP<-Person$new("Charlie","Brown")
# etc ...

first_in_line$do_something_very_long()
next_customer$do_something_very_long()
VIP$do_something_very_long()
# etc ...

因此,我的(名义上的)用户可能会启动

$ R ~/batch_processing.R 

R> source("batch_processing.R")

,并且在脚本运行时不会发生太多事情。因此,我希望获得一些反馈,以便当用户喝完咖啡回来时,他可以看着屏幕,看到计算机正在忙于处理VIP或next_customer。

很明显-一种方法是显式地为每个对象赋予唯一标识符(在这种情况下为$ name)。但是,在我的实际应用案例中,这不是很有意义,或者会重复对象名称(“模型1”,“模型2” ...),这有点浪费!