如何量化R选项“max.print”?

时间:2017-10-18 16:43:52

标签: r data-structures console

控制台的R输出由“max.print”选项控制,大对象被截断为此数字,省略了多余的条目。 ?options州的文档:

  

max.print

     

整数,默认为99999. print或show方法即可   使用此选项,以限制信息量   打印,按顺序打印(通常略少)   比)max.print 条目

但我找不到“条目”的确切定义。它不是用字符来衡量的,而是似乎可以控制:

  1. 矢量或列表元素
  2. 数据框或矩阵行
  3. 来自功能输出的文本行
  4. 这使得该选项在尝试计划输出大小时有些不可预测(例如,当sink将控制台输出到文件时。为了实现更多控制,有助于了解给定print调用的“条目”是什么。据推测,这是从传递给print的数据结构定义的...是否有对所有数据结构构成“条目”的定义?

4 个答案:

答案 0 :(得分:3)

为了好奇,我提取了max.print的源代码。我相信它的这一部分是用Fortran写的。它对我来说都是希腊语,但这是它的字面意思。

    else if (streql(CHAR(namei), "max.print")) {
    int k = asInteger(argi);
    if (k < 1) error(_("invalid value for '%s'"), CHAR(namei));
    SET_VECTOR_ELT(value, i, SetOption(tag, ScalarInteger(k)));
    }

如果您想查看options的完整源代码,可以在此处找到。 https://github.com/wch/r-source/blob/trunk/src/main/options.c

答案 1 :(得分:1)

试验和知识,

options(max.print = 20)

( forty <- 1:40 ) 
#>  [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18
#> [19] 19 20
#>  [ reached getOption("max.print") -- omitted 20 entries ]

( A = matrix(forty, nrow=10, ncol=4, byrow = TRUE) )
#>       [,1] [,2] [,3] [,4]
#>  [1,]    1    2    3    4
#>  [2,]    5    6    7    8
#>  [3,]    9   10   11   12
#>  [4,]   13   14   15   16
#>  [5,]   17   18   19   20
#>  [ reached getOption("max.print") -- omitted 5 rows ]

as.data.frame(A)
#>    V1 V2 V3 V4
#> 1   1  2  3  4
#> 2   5  6  7  8
#> 3   9 10 11 12
#> 4  13 14 15 16
#> 5  17 18 19 20
#>  [ reached getOption("max.print") -- omitted 5 rows ]

require(tibble)
as_tibble(A)
#> # A tibble: 10 x 4
#>       V1    V2    V3    V4
#>    <int> <int> <int> <int>
#> 1      1     2     3     4
#> 2      5     6     7     8
#> 3      9    10    11    12
#> 4     13    14    15    16
#>  [ reached getOption("max.print") -- omitted 6 rows ]

正如基冈史密斯points out below所说,模糊性可以清楚地说明如下

options(max.print = 5); c(1:10); c(1:6)
#> [1] 1 2 3 4 5
#> [ reached getOption("max.print") -- omitted 5 entries ]
#> [1] 1 2 3 4 5 6

即。 max.print在极限情况下是模糊的。

答案 2 :(得分:0)

看起来是字符,数字或逻辑计数的限制,即对象的length()

options(max.print = 10) #Set max.print to 10

test<-1:100 #test1
test
test2<-101:200 #test2
test2
letters #test3
test4<-c("test1","test2","test3","test4","test5","test6","test7","test8","test9","test10","test11,"test12","test13") #test4
test4
data.frame(cbind(test,test2)) #test5
test==test2 #Test6

答案 3 :(得分:0)

首先,像这样编写“选项”功能 options(max.print = 1874)#1874行的数据集

秒,写入vector / df进行打印 复制了(ubi.sf $ geometry)#这对我有用