11

我正在使用 RStudio、R Markdown、Latex 和 Pandoc 来清理数据、构造变量、运行分析并报告结果。我对可重复研究的概念不熟悉,但我被迷住了。很有意义。

动态表格和数字没有问题。然而,动态文本难倒我。我可以插入内联代码来说明所有统计数据中有 95% 是错误的,但我不确定如何以可重现的方式改变我的语言。

例如,如果我有一个对象 x=0.66,我想写“三分之二的牙医使用 Crest”怎么办?我可以查看 x 的当前值 0.66,然后在文本中键入“2 out of 3”,但这是不可重现的。假设我得到新数据并重新运行分析,x 变为 0.52。我的文字会过时。当然,我可以动态报告 52% 的牙医更喜欢 Crest,但是当所有内容都以百分比报告时,报告就会变得陈旧。

我的想法是,当我想改变写作时,我可以创建可以在文本中调用的函数。例如,“out.of”函数可以处理 if 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"))...)

我还可以创建一个分数函数,它可以对十分之一、五分之二、三分之一做类似的事情......

我相信其他人已经解决了这个问题。有什么线索吗?想法?

4

1 回答 1

7

有一个包 FRACTION ,当您将 / 替换为“out of”时,它可以工作。但是,使用小数位数时的输出很奇怪:

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

由@Dieter Menne 编辑:忘记这一点,请参阅下面的@Ben Bolker。

于 2012-12-29T19:42:01.377 回答