R6—;为什么在使用打印功能时,活动绑定会打印两倍的内容?

R6—;为什么在使用打印功能时,活动绑定会打印两倍的内容?,r,r6,R,R6,我正在R6类中创建一个活动绑定来打印一个私有元素 当我调用print(private$privamail)时,结果会打印两次,但只打印在private元素上,而不会打印在public元素上 如果我没有使用打印,没有问题 这是一个reprex: team <- R6::R6Class("Team", public = list( mail = "colin@thinkr.fr"), private = list(privMail

我正在R6类中创建一个活动绑定来打印一个私有元素

当我调用
print(private$privamail)
时,结果会打印两次,但只打印在private元素上,而不会打印在public元素上

如果我没有使用
打印
,没有问题

这是一个reprex:

team <- R6::R6Class("Team",
                public = list( mail = "colin@thinkr.fr"),
                private = list(privMail = "colin@thinkr.fr"), 
                active = list(
                  MailPriv = function(){ print(private$privMail) },
                  Mail = function(){ print(self$mail) }
                )
)
a <- team$new()
a$MailPriv
#> [1] "colin@thinkr.fr"
#> [1] "colin@thinkr.fr"
a$Mail
#> [1] "colin@thinkr.fr"
#> [1] "colin@thinkr.fr"
#Without using print 
team2 <- R6::R6Class("Team",
                    public = list( mail = "colin@thinkr.fr"),
                    private = list(privMail = "colin@thinkr.fr"), 
                    active = list(
                      MailPriv = function(){ private$privMail },
                      Mail = function(){self$mail }
                    )
)
abis <- team2$new()
abis$MailPriv
#> [1] "colin@thinkr.fr"
abis$Mail
#> [1] "colin@thinkr.fr"


devtools::session_info()
#> Session info -------------------------------------------------------------
#>  setting  value                       
#>  version  R version 3.4.4 (2018-03-15)
#>  system   x86_64, darwin15.6.0        
#>  ui       X11                         
#>  language (EN)                        
#>  collate  fr_FR.UTF-8                 
#>  tz       Europe/Paris                
#>  date     2018-05-24
#> Packages -----------------------------------------------------------------
#>  package   * version date       source                          
#>  backports   1.1.2   2017-12-13 CRAN (R 3.4.3)                  
#>  base      * 3.4.4   2018-03-15 local                           
#>  compiler    3.4.4   2018-03-15 local                           
#>  datasets  * 3.4.4   2018-03-15 local                           
#>  devtools    1.13.5  2018-02-18 CRAN (R 3.4.3)                  
#>  digest      0.6.15  2018-01-28 CRAN (R 3.4.3)                  
#>  evaluate    0.10.1  2017-06-24 CRAN (R 3.4.1)                  
#>  graphics  * 3.4.4   2018-03-15 local                           
#>  grDevices * 3.4.4   2018-03-15 local                           
#>  htmltools   0.3.6   2017-04-28 CRAN (R 3.4.0)                  
#>  knitr       1.20    2018-02-20 CRAN (R 3.4.3)                  
#>  magrittr    1.5     2014-11-22 CRAN (R 3.4.0)                  
#>  memoise     1.1.0   2017-04-21 CRAN (R 3.4.0)                  
#>  methods   * 3.4.4   2018-03-15 local                           
#>  R6          2.2.2   2017-06-17 CRAN (R 3.4.0)                  
#>  Rcpp        0.12.16 2018-03-13 CRAN (R 3.4.4)                  
#>  rmarkdown   1.9     2018-03-01 CRAN (R 3.4.3)                  
#>  rprojroot   1.3-2   2018-01-03 CRAN (R 3.4.3)                  
#>  stats     * 3.4.4   2018-03-15 local                           
#>  stringi     1.1.7   2018-03-12 CRAN (R 3.4.4)                  
#>  stringr     1.3.0   2018-02-19 CRAN (R 3.4.3)                  
#>  tools       3.4.4   2018-03-15 local                           
#>  utils     * 3.4.4   2018-03-15 local                           
#>  withr       2.1.2   2018-04-13 Github (jimhester/withr@79d7b0d)
#>  yaml        2.1.18  2018-03-08 CRAN (R 3.4.4)
团队[1]”colin@thinkr.fr"
美元的邮件
#> [1] "colin@thinkr.fr"
#> [1] "colin@thinkr.fr"
#不使用打印
小组2[1]。”colin@thinkr.fr"
开发工具::会话信息()
#>会话信息-------------------------------------------------------------
#>设定值
#>R版3.4.4版(2018-03-15)
#>系统x86_64,达尔文15.6.0
#>ui X11
#>语言(英文)
#>核对fr\U fr.UTF-8
#>欧洲/巴黎
#>日期2018-05-24
#>包裹-----------------------------------------------------------------
#>包*版本日期源
#>后端口1.1.2 2017-12-13起重机(R 3.4.3)
#>基准*3.4.4 2018-03-15本地
#>编译器3.4.4 2018-03-15本地
#>数据集*3.4.4 2018-03-15本地
#>开发工具1.13.5 2018-02-18起重机(R 3.4.3)
#>摘要0.6.15 2018-01-28起重机(R 3.4.3)
#>评估0.10.1 2017-06-24起重机(R 3.4.1)
#>图*3.4.4 2018-03-15本地
#>GRD设备*3.4.4 2018-03-15本地
#>htmltools 0.3.6 2017-04-28克朗(R 3.4.0)
#>克尼特1.20 2018-02-20克兰(R 3.4.3)
#>magrittr 1.5 2014-11-22起重机(R 3.4.0)
#>备忘录1.1.0 2017-04-21克兰(R 3.4.0)
#>方法*3.4.4 2018-03-15本地
#>R6 2.2.2 2017-06-17起重机(R3.4.0)
#>Rcpp 0.12.16 2018-03-13起重机(R 3.4.4)
#>rmarkdown 1.9 2018-03-01起重机(R 3.4.3)
#>rprojroot 1.3-2 2018-01-03起重机(R 3.4.3)
#>统计数据*3.4.4 2018-03-15本地
#>stringi 1.1.7 2018-03-12起重机(R 3.4.4)
#>stringr 1.3.0 2018-02-19起重机(R 3.4.3)
#>工具3.4.4 2018-03-15本地
#>utils*3.4.4 2018-03-15本地
#>第2.1.2条2018-04-13 Github(吉姆赫斯特)/withr@79d7b0d)
#>yaml 2.1.18 2018-03-08起重机(R 3.4.4)
编辑
确切地说,我的问题不是关于如何解决这个问题(我可以通过删除打印来解决,就像在第二节课中一样),而是关于为什么使用print()打印两次内容。

我不确定我是否完全理解了你的问题,但是我认为您有一个来自
print
的打印,还有一个来自
print
的返回元素

尝试使用例如
(打印(1))


因此,基本上,我会在这里删除
print

print
返回它打印的值,请尝试此修改版本:

team <- R6::R6Class("Team",
                    public = list( mail = "colin@thinkr.fr"),
                    private = list(privMail = "colin@thinkr.fr"), 
                    active = list(
                        MailPriv = function(){ print(private$privMail); "hi!" },
                        Mail = function(){ print(self$mail) }
                    )
)
a <- team$new()
> a$MailPriv
[1] "colin@thinkr.fr"
[1] "hi!"

团队,因为您调用的是
$mail
,而不是
$mail
,所以它忽略了不可见(x)。谢谢你的回答。我接受弗洛里安的回答,因为他是最快的。谢谢