R-如何返回命名列表而不打印到控制台

时间:2016-11-13 17:10:52

标签: r

我想从函数f返回一个命名列表。 例如,调用f(args)给出了一个名为x和y的变量的命名列表。 我在函数的末尾使用return(list(x = x,y = y))。

$x
[1] 1 2

$y
[1] 12

问题是上面的输出总是将整个列表的值打印到控制台。我想避免这种情况,因为$ x可能会取一个非常大的矩阵的值。当我在控制台中输入模型时,有没有办法让我定义模型< -f(args)并压缩$ x值的打印。相反,我只想通过模型$ x访问x。

2 个答案:

答案 0 :(得分:1)

使用invisible

f <- function(x, y) {
    invisible(list(x, y))
}

f(rnorm(1e4), rnorm(1e4))
## (nothing)

str(f(rnorm(1e4), rnorm(1e4)))
# List of 2
#  $ : num [1:10000] 2.402 0.51 -1.117 0.415 0.849 ...
#  $ : num [1:10000] -0.642 0.967 -0.328 -0.33 -0.914 ...

答案 1 :(得分:0)

说实话,我正在寻找一种类似的解决方案。就像上面的注释一样,避免在控制台中输出的一种方法是将返回列表的函数的输出分配给变量。我确实知道这可能不是所有情况的解决方案。

f<-function(x=1,y=1){
   return(list(x=x,y=y))
}

result<-f()