返回R中的不可见和可见输出

返回R中的不可见和可见输出,r,function,return,R,Function,Return,我想用一个函数返回可见和不可见对象的混合。我尝试了一个如下的列表:return(list(inv=invisible(x),vis=y))或return(list(invisible(inv=x),vis=y)),但它不起作用 我很欣赏你的想法。提前谢谢 我认为最简单的解决方案就是创建一个S3打印方法,并在列表中添加一个class标记 create_list = function(a, b) { l = list(a=a, b=b) class(l) = "mylist" l }

我想用一个函数返回可见和不可见对象的混合。我尝试了一个如下的列表:
return(list(inv=invisible(x),vis=y))
return(list(invisible(inv=x),vis=y))
,但它不起作用


我很欣赏你的想法。提前谢谢

我认为最简单的解决方案就是创建一个S3打印方法,并在列表中添加一个class标记

create_list = function(a, b) {
  l = list(a=a, b=b)
  class(l) = "mylist"
  l
}
然后创建一个相应的
print
方法,该方法只打印第二个元素:

print.mylist = function(x, ...){
  x = x["b"]
  NextMethod()
}
就这样:

R> (l = create_list(1:4, 5:10))
$b
[1]  5  6  7  8  9 10

R> str(l)
List of 2
 $ a: int [1:4] 1 2 3 4
 $ b: int [1:6] 5 6 7 8 9 10
 - attr(*, "class")= chr "mylist"
现在我明白了,只有两组可以携带多个物体:)谢谢您。