从S3索引函数返回“[”不可见

时间:2015-05-14 20:01:55

标签: r

在自定义类上使用S3索引函数“[”时,是否可以返回不可见对象?例如,在下面的代码中,有没有办法让最后一行代码不打印?

treepanel

2 个答案:

答案 0 :(得分:6)

您遇到了由原始函数引起的可见性机制问题。考虑:

> length.x <- function(x) invisible(23)
> length(structure(1:10, class="x"))
[1] 23
> mean.x <- function(x) invisible(23)
> mean(structure(1:10, class="x"))
> # no output

length是原始的,但mean不是。来自 R Internals

  

是否打印顶级R表达式的返回值由全局布尔变量R_Visible控制。根据文件src / main / names.c中表的eval列,在进入所有原始和内部函数时设置(为true或false):宏PRIMPRINT可以提取相应的设置。

  

内部和基本函数强制返回R_Visible的文档设置,除非允许C代码更改它(上面的例外由值为2的PRIMPRINT指示)。

所以看起来你不能强迫来自[length等原始泛型的隐形返回,你必须采用像Alex所建议的那样的解决方法。

答案 1 :(得分:3)

问题是,<div ng-repeat="data in list_items | filter:{selected:false}"> {{ data.name }} </div> 返回的值不属于[.mat类,因为您使用的是mat,因此它使用默认的打印方法来处理它所拥有的任何类。要解决此问题,请确保返回的对象仍为unclass,并为mat个对象定义打印方法。

mat