2012-12-29 25 views
11

我使用RStudio,R Markdown,Latex和Pandoc來清理數據,構造變量,運行我的分析並報告結果。我對可重複研究的概念很陌生,但我很迷惑。具有很大的意義。可重複研究的自動化文本

動態表格和數字是沒有問題的。但是,動態文本正在困擾着我。我可以插入內聯代碼,說95%的統計數據都是錯誤的,但我不確定如何以可重現的方式改變我的語言。

例如,如果我有一個對象x = 0.66,並且我想寫「3個牙醫中的2個使用Crest」?我可以查看x的當前值0.66,並在文本中鍵入「2的3」,但這是不可重現的。假設我獲得新數據並重新運行分析,x變爲0.52。我的文本會過時。當然,我可以動態地報告52%的牙醫更喜歡佳潔士,但是當一切都以百分比形式報告時,報告會變得過時。

我的想法是,我可以創建函數,我可以在文本中調用,當我想改變寫作。舉例來說,一個「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"))...) 

我還可以創建一小部分功能,會做的十分之一,五分之二的類似的東西,一個 - 第三...

我相信別人已經解決了這個問題。任何線索?想法?

+0

這是一個非常有趣的問題,但我認爲這將取決於您的可讀性限制。比如,你認爲「20分之1」還是「25分之1」是有效的選擇?你想爲更一般的休息時間設置什麼樣的門檻(比如「五分之二」)?一旦解決了這個問題,我會建議嘗試'cut()'並指定標籤而不是'ifelse()'。我不認爲任何軟件包會爲你做這件事,但他們應該幫助你達到目標! – A5C1D2H2I1M1N2O1R2T1

+0

談到代表百分比時,我認爲「十分之一」是我想要去的最低點。今年我學到了大量的R(從零的基線),但沒有減少()。將研究它。謝謝。 –

+0

那麼你將不得不弄清楚什麼「超出」類別是最有用的。諸如「9,8,7,6」之類的類別可能不會很方便用戶,因爲這會對一些精神上試圖將這些數字轉換回百分比的讀者徵稅。祝你好運! – A5C1D2H2I1M1N2O1R2T1

回答

7

有一個包FRACTION,當你更換/「出」,它可以工作。但是,使用小數位數時的輸出很奇怪:

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'解決這個問題:'fraction(0.66,cycles = 3)'(並且'MASS'已經被推薦) –

+0

Krr ....我應該知道,但是可以不記得在哪裏找到它。 –

+0

很棒,@BenBolker –