Резултати от регресията: формат на показване по подразбиране

Изпълнявам регресии в R, използвайки функцията lm() и не мога да успея да покажа резултатите в прост формат. Трябва да отпечатам вектор от p-стойности:

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

Как мога да отменя научната нотация и да получа разумна точност? Опитах options(scipen=1000), но той показва безкрайни редове от цифри, някак си options(digits=7) не работи тук.

Знам, че мога да използвам неща като формат и спринтове, но бих искал да задам правилото за показване по подразбиране за целия цифров изход, напр. не повече от 6 знака след десетичната запетая.


person Anton Babkin    schedule 10.06.2012    source източник
comment
можете ли да дадете очаквания резултат? Искате да отпечатате coef за lun като 0.000000?   -  person Gavin Simpson    schedule 10.06.2012
comment
Да, освен ако изрично не е посочена друга точност, бих искал да имам 0,000000.   -  person Anton Babkin    schedule 16.06.2012


Отговори (1)


Не мисля, че това ще бъде възможно за общо показване в 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.

По подразбиране за digits е NULL, което показва, че се използва getOption("digits"), но както вече отбелязахме, това е само ръководство.

Изглежда, че няма начин да конфигурирате R да прави това, което искате, нито да го правите глобално. Ще трябва да пренапишете print.default() или всички print() методи, които трябва да използвате, и да накарате тези версии да се използват вместо стандартните версии --- сега не е лесно с NAMESPACES.

person Gavin Simpson    schedule 10.06.2012