可重复研究的自动化文本

11

我正在使用RStudio、R Markdown、Latex和Pandoc来清洗数据、构建变量、运行分析并报告结果。我对可重复研究的概念还不是很了解,但我已经着迷了。这很有道理。

动态表格和图形没有问题。然而,动态文本却令我困扰。我可以插入内联代码来说所有统计学中95%都是假的,但我不确定如何以可重复的方式改变我的语言。

例如,如果我有一个对象x = 0.66,并且我想写“3个牙医中有2个使用佳洁士”?我可以查看当前值为0.66的x,并在文本中输入“3个中的2个”,但这不是可重复的。假设我获取新数据并重新运行我的分析,x变成了0.52。我的文本就过时了。当一切都以百分比报告时,报告就容易陈旧。

我的思路是创建函数,以便在需要改变文本时调用。例如,“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"))...)

我也可以创建一个分数函数,用于十分之一、二分之五、三分之一等类似的情况……

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


这是一个非常有趣的问题,但我认为它实际上取决于你对可读性的限制。例如,您是否认为“20个中的1个”或“25个中的1个”是有效选项?您想为更一般的断点(如“5个中的2个”)设置什么阈值?一旦解决了这个问题,我建议尝试使用cut()并指定标签,而不是使用ifelse()。我不认为任何软件包会为您完成这项工作,但它们应该能帮助您实现目标! - A5C1D2H2I1M1N2O1R2T1
说到表示百分比,我认为“十分之几”是我想要的最低限度。今年我学了很多 R 语言(从零开始),但没学过 cut() 函数。我会去看一下。谢谢。 - Eric Green
那么你需要找出哪些“out of”类别最有用。像“out of {9, 8, 7, 6}”这样的类别可能不太用户友好,因为这会让一些读者在尝试将这些数字转换回百分比时感到困难。祝好运! - A5C1D2H2I1M1N2O1R2T1
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。


5
你可以使用MASS::fractions来解决这个问题:fractions(0.66,cycles=3)(而且MASS已经被推荐使用了)。 - Ben Bolker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接