Почему аргумент 'цифры' в печати R меняет значение? - PullRequest
4 голосов
/ 09 мая 2019

Почему функция возвращает значение t = 13.214, а print(..., digits = 3) возвращает t = 10?

vals <- data.frame(a = c(4, 2, 4, 7, 3, 4, 8, 8, 3, 0, 1, 5, 4, 6, 4, 8, 7, 9, 6, 6, 3, 6, 7, 4), 
                   b = c(5, 7, 6, 13, 12, 6, 14, 16, 4, 2, 7, 7, 4, 8, 9, 9, 11, 13, 12, 8, 3, 8, 7, 7))
stats::t.test(x = vals)
# One Sample t-test
# data:  vals
# t = 13.214, df = 47, p-value < 2.2e-16
# alternative hypothesis: true mean is not equal to 0
# 95 percent confidence interval:
#   5.598761 7.609572
# sample estimates:
#   mean of x 
# 6.604167 
print(stats::t.test(x = vals), digits = 3)

Форма ?print:

цифр: минимальное количество значащих цифр, см. Print.default.

Но это не должно измениться с 10 на 13?

пакет "stats" версия 3.5.1
R.version
платформа x86_64-w64-mingw32
арка x86_64
os mingw32
система x86_64, mingw32
статус
мажор 3
несовершеннолетний 5.1
год 2018
месяц 07
день 02
svn rev 74947
язык R
version.string R версия 3.5.1 (2018-07-02) никнейм Feather Spray

1 Ответ

2 голосов
/ 09 мая 2019

Первый шаг в ответе на эти вопросы - всегда выяснить, с каким методом печати мы имеем дело.Общая справка в ?print не обязательно будет ужасно актуальной.У объектов t.test есть класс htest, поэтому мы хотим взглянуть на print.htest.

Обратите внимание, что ?print.htest отправляет вас на чуть более конкретную страницу документации.Документация для digits не говорит ничего конкретного, но затем в разделе Details мы видим:

Оба метода печати традиционно не подчинялись аргументу digits должным образом.Теперь они используют метод htest в основном в выражениях, таких как max (1, цифры - 2).

(Это в R 3.5.2)

Например, в функцииВ коде мы видим такие вещи, как:

out <- c(out, paste(names(x$statistic), "=", format(signif(x$statistic, 
            max(1L, digits - 2L)))))

Значение по умолчанию для digits обычно будет 7. Он использует digits для печати выборочных оценок и доверительных интервалов, но меньше цифр для других величин.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...