如何打印包含函数的列表

时间:2016-09-07 22:35:27

标签: r

我正在使用minpack.lm包,我正在尝试为其输出添加一些功能。模型输出的str表明它包含许多函数。我想添加一个新功能,我已经完成了,当我打印str它看起来像这样

..$ Rmat      :function ()  
..$ predict   :function (newdata = list(), qr = FALSE)  
..$ getMoments:function ()  
  .. ..- attr(*, "srcref")=Class 'srcref'  atomic [1:8] 115 25 115 46 25 46 589 589
  .. .. .. ..- attr(*, "srcfile")=Classes 'srcfilealias', 'srcfile' <environment: 0x10a8373c0> 

但是我希望我的getMoments功能可以像str那样打印:

..$ Rmat      :function ()  
..$ predict   :function (newdata = list(), qr = FALSE)  
..$ getMoments:function ()  

我的问题是,为什么在列表中添加新功能会使str的打印输出看起来不同?我认为这可能与在不同的环境中创建有关,但是将我的函数环境改变为与模型输出中的环境相同也无济于事。

作为可重现的示例,请使用minpack.lm包中的示例:

DNase1 <- subset(DNase, Run == 1)
fm1DNase1 <- nlsLM(density ~ SSlogis(log(conc), Asym, xmid, scal), DNase1)
fm1DNase1$m$myFun <- function() 2
str(fm1DNase1)
List of 5
 $ m       :List of 17
  ..$ resid     :function ()  
  ..$ fitted    :function ()  
  ...
  ..$ myFun     :function ()  
  .. ..- attr(*, "srcref")=Class 'srcref'  atomic [1:8] 1 22 1 33 22 33 1 1
  .. .. .. ..- attr(*, "srcfile")=Classes 'srcfilecopy', 'srcfile' <environment: 0x10be3e158> 
  ..- attr(*, "class")= chr "nlsModel"

1 个答案:

答案 0 :(得分:0)

要了解属性背后的原因,请参阅this

但是,如果您正在构建程序包并遇到此行为,那么您会发现当从CRAN / GitHub构建程序包时,您将不再看到函数属性。