Автоматизированный текст для воспроизводимых исследований

Я использую RStudio, R Markdown, Latex и Pandoc для очистки данных, построения переменных, запуска моего анализа и отчета о результатах. Я новичок в концепции воспроизводимых исследований, но я подключен. Имеет большой смысл.

Динамические таблицы и цифры не представляют проблемы. Однако динамический текст меня бросает. Я могу вставить встроенный код, чтобы сказать, что 95% всех статистических данных являются ложными, но я не уверен, как я могу изменить свой язык воспроизводимым образом.

Например, что, если у меня есть объект x = 0.66, и я хочу написать "2 из 3 стоматологов используют Crest"? Я могу посмотреть текущее значение x, 0.66 и тип "2 из 3" в тексте, но это не воспроизводится. Скажем, я получаю новые данные и повторно запускаю свой анализ, а x становится 0.52. Мой текст будет устаревшим. Конечно, я мог бы динамически сообщать, что 52% дантистов предпочитают Crest, но отчет становится устаревшим, когда все сообщается в процентах.

Моя мысль заключается в том, что я могу создавать функции, которые я мог бы вызывать в тексте, когда хочу изменить запись. Например, функция "out.of" может работать, если выражения else выражают текст:

ifelse(x < 0.09,"fewer than 1 out of 10",
ifelse(x >= 0.09) & x < 0.11,"roughly 1 out of 10",
ifelse(x >= 0.11 & x < 0.15,"slightly more than 1 out of 10",
ifelse(x >= 0.15 & x < 0.19,"nearly 2 out of 5",
ifelse(x >= 0.19 & x < 0.21,"roughly 2 out of 5",
...
ifelse(x >= 0.95 & x < 0.99,"nearly all",
ifelse(x >= 0.99,"all","fubar"))...)

Я мог бы также создать функцию фракции, которая сделала бы что-то подобное для одной десятой, двух пятых, одной трети...

Я уверен, что другие уже решили эту проблему. Любые вести? Идеи?

Ответ 1

Существует пакет FRACTION, и когда вы меняете/ "вне", он может работать. Однако вывод при использовании числа десятичных знаков странно:

library(FRACTION)
fra(0.66,j=2)
# [1] "33 / 50"
fra(0.66,j=1)
#"7 / 1e+08" 

Редактировать @Dieter Menne: забудьте об этом, см. @Ben Bolker ниже.