1

我正在使用 lm() 函数在 R 中运行回归,但无法以简单格式显示结果。我需要打印一个 p 值向量:

> summary(lm)$coef[,4]
  (Intercept)           lun          d1un 
 1.433706e-01 4.673723e-158  6.629044e-04 

如何覆盖科学记数法并获得合理的精度?我尝试了选项(scipen = 1000),但它显示无穷无尽的数字行,不知何故选项(数字= 7)在这里不起作用。

我知道我可以使用格式和冲刺之类的东西,但我想为所有数字输出设置默认显示规则,例如不超过 6 个小数。

4

1 回答 1

0

我认为这是不可能的,因为整个 R. 的一般显示?options是关于数字的:

 ‘digits’: controls the number of digits to print when printing
      numeric values.  It is a suggestion only.  Valid values are
      1...22 with default 7.  See the note in ‘print.default’ about
      values greater than 15.

关键短语是“这只是一个建议”。

接下来,请注意打印的内容首先由print()应用的方法控制(这在交互使用期间是隐藏的,因为 R auto- print()s)。有关详细信息?print,请参见?print.default基本方法。从?print.default我们注意到

digits: a non-null value for ‘digits’ specifies the minimum number of
        significant digits to be printed in values.  The default,
        ‘NULL’, uses ‘getOption(digits)’.  (For the interpretation
        for complex numbers see ‘signif’.)  Non-integer values will
        be rounded down, and only values greater than or equal to 1
        and no greater than 22 are accepted.

详细信息部分,我们有:

   The same number of decimal places is used throughout a vector.
   This means that ‘digits’ specifies the minimum number of
   significant digits to be used, and that at least one entry will be
   encoded with that minimum number.  However, if all the encoded
   elements then have trailing zeroes, the number of decimal places
   is reduced until at least one element has a non-zero final digit.
   Decimal points are only included if at least one decimal place is
   selected.

的默认值digitsNULL表示getOption("digits")使用的,但正如我们已经指出的,这只是一个指南。

似乎没有办法将 R 配置为做你想做的事,也没有办法在全局范围内做。您将需要重写print.default()print()您需要使用的所有方法,并使用这些版本而不是标准版本 --- 现在使用 NAMESPACES 并不容易。

于 2012-06-10T09:16:52.297 回答