【发布时间】:2012-11-02 03:46:05
【问题描述】:
许多函数的输出都以列表结构形式出现 - 例如 lm()。因此,您可以使用“$”或带方括号的索引来检索输出的单独部分。我的问题是如何以列表形式创建输出,而不会公开表明它是一个列表。如您所知,当在屏幕上打印列表时,通常会标明子列表名称或索引,如下所示:
L1 = list(a=1:3, b=letters[1:3])
L1
$a
[1] 1 2 3
$b
[1] "a" "b" "c"
但是,lm() 输出从不使用“$”和子列表名称显示不同的子列表 - 尽管您可以使用“$”和子列表名称提取这些子列表。
第二个问题涉及到某些函数的输出包含的内容远远超过屏幕上实际打印的内容(例如,lm())。如果我们将 str() 用于拟合模型,我们将在拟合模型中看到一大堆内容,其中大部分没有打印出来。这是如何实现的?该函数是否像下面这样分别打印并输出其他内容(使用 invisible())?
foo = function(x){
result = list(data=x, test.result=t.test(x))
print(result[[2]])
invisible(result)
}
foo(1:10)$data
谢谢!
【问题讨论】:
-
Here's a similar question 和一个可以帮助您了解如何开始编写自己的打印方法的答案。