Rstudio 報告與重復(fù)性

前言

在之前章節(jié)中霞篡,盡管我們已經(jīng)介紹了在 R中進(jìn)行元分析時所需 要用到的各種技術(shù)、方法和策略,然而這些所涉及的統(tǒng)計程序僅占 整個元分析家族的一小部分溺欧。當(dāng)我們在實際的元分析過程中,可能還會遇到以下問題:

1.如果你發(fā)現(xiàn)在元分析的R代碼中有一個錯誤柏肪,那么需要做出一些調(diào)整再復(fù)制一些分析步驟
2.合作者或?qū)徃迦私ㄗh你使用另外一種不同的方法或模型姐刁,或余姚對你的數(shù)據(jù)進(jìn)行敏感性分析
3.你想把分析過程的某些部分分派給合作者,這需要給他發(fā)送一份你當(dāng)前的分析現(xiàn)狀
4.你可能需要中斷分析工作一段時間烦味,這意味著返回工作之前聂使,你也許會忘記一 些分析步驟
5.你希望能將自己的分析結(jié)果與其他項目合作者共享,但他們可能從未接觸過 R谬俄, 也未安裝 Rstudio

在這僅列舉部分你可能遭遇的場景柏靶。因此當(dāng)在 R中進(jìn)行元分析時, 如果能夠創(chuàng)建一個可重復(fù)分析的工作流程(reproducible work
flow)凤瘦,顯然對你和他人都有利宿礁。可重復(fù)性也是開放科學(xué)實踐的基 石蔬芥。讓你的元分析具有完全的可重復(fù)性梆靖,會為其他關(guān)注你是如何獲 得分析結(jié)果的研究者帶來直觀的答案控汉。RStudio是一個創(chuàng)建可重復(fù)工作流程的最佳工具,它能夠促進(jìn)研究者在一個項目上的合作返吻。在這里我們將介紹兩個工具用于重復(fù)姑子、呈現(xiàn)和傳播分析:RMarkdown 和 Open Science Framework。

R Project

在開始正式分析前测僵,有一個好辦法是先在你 RStudio中創(chuàng)建一個R項目街佑。R projects創(chuàng)建了一個與你電腦中特定的文件夾相關(guān)聯(lián)的新環(huán)境,這其中包含了你在分析時所有需要用到的數(shù)據(jù)與 R代碼捍靠。 R project中進(jìn)行分析意味著你創(chuàng)建的所有對象都暫時保存在你的 project中沐旨,方便你在下次返回工作時可以直接使用。為了創(chuàng)建一個 新的 Rproject榨婆,你需要點擊 RStudio的右上角 Project圖標(biāo)磁携,并在 下拉菜單中選擇 NewProject。



然后良风,你還需要創(chuàng)建一個新目錄(New Directory)谊迄,即你電腦上 的一個新文件夾,將它設(shè)定為你 project的工作目錄烟央。



點擊New Directory统诺。

比如,你可以將你的新項目命名為“Meta-Analysis Project”疑俭,將 項目文件夾保存在 my~Documents/Rfolder



點擊完“Create Project”后粮呢,你就成功創(chuàng)建了自己的 R project。 在 RStudio窗口的右下角 Files標(biāo)簽下怠硼,你將會看到當(dāng)前存儲在該項目文件夾中的所有數(shù)據(jù)鬼贱。通過點擊“New Folder”,你也還可以在 RStudio中直接創(chuàng)建子文件夾香璃,例如一個專門用于存儲 data的文件夾这难。

R project的一大特色是,不需要使用絕對路徑去引用或?qū)胛?們想要調(diào)用的文件葡秒。我們只需要指定文件名姻乓,或者,如果需要調(diào)用一個子文件眯牧,只需要輸入文件名和子文件名即可蹋岩。例如,假定在我們的數(shù)據(jù)子文件夾中有一個數(shù)據(jù)集data.xlsx学少,通過使用 readxl包剪个,我們只需要指定數(shù)據(jù)文件夾和文件名就能夠輕松導(dǎo)入該數(shù)據(jù)集。

read_excel("data/data.xlsx")

我們也可以將 RStudio右上角的 Environment中所列的所有 objects保存為一個R Data(.rda)文件版确,存放至 project folder扣囊。假定 在你 Global Environment中有一個dat數(shù)據(jù)框乎折。我們可以使用下面的代碼,將該數(shù)據(jù)集保存至我們的 data folder里面

save(dat,file="data/dat.rda")

在以后我們可以使用下述函數(shù)侵歇,將該數(shù)據(jù)集重新加載至我們的Global Environmen內(nèi)

load("data/dat.rda")

R Markdown

Markdown是一種用于文本格式化的簡單標(biāo)記語言骂澄。R Markdown是對 Markdown的拓展,它可以輕松地把純文本惕虑、R代碼以及R代碼的輸出整合在一個文檔中坟冲。這使得 R Markdown在報告你的分析結(jié)果時是一個非常有幫助的工具。我們可以使用 RMarkdown來創(chuàng)建 HTML或 PDF文件溃蔫,并且用于記錄你分析時所使用的全部代碼健提、基于這些代碼所獲得的結(jié)果以及用于解釋每一步分析步驟的詳細(xì)文本。在 R Studio中創(chuàng)建 RMarkdown非常便利伟叛。 只需要點擊 R Studio窗口左上角一個帶有綠色加號的白色圖標(biāo)矩桂,然后在下拉菜單中點擊“R Markdown”如下圖所示:


在定義完新 RMarkdown文檔名后,它應(yīng)該出現(xiàn)在你 RStudio 的左上角痪伦。

除前六行外,在該文檔中已經(jīng)包含了一些典型內(nèi)容雹锣,我們可以刪除它們

這部分是你的YAML header(另一種多欄布局的標(biāo)題 Yet Another Multicolumn Layout)网沾。它包括標(biāo)題、作者蕊爵、數(shù)據(jù)和文檔的導(dǎo)出格式辉哥。在此我將輸出格式設(shè)定為 html_document,意味著該文檔完成后將輸出一個 HTML頁面攒射。RMarkdown的結(jié)構(gòu)包括兩部分: 純 Markdown文本和所謂的R chunks醋旦,呈灰底。在這里我將不會詳細(xì)講解 R Markdown文檔中的文本部分是如何格式化的会放,并且在 Cheat Sheet上(https://rstudio.com/wp- content/uploads/2015/02/rmarkdown-cheatsheet.pdf)上有大量資源可以學(xué)習(xí) Markdown語法(這大概只需要花費你 20分鐘左右 時間)饲齐。另一方面,關(guān)于 R code chunks部分咧最,只是包含通常你需要在控制臺輸出的所有R代碼捂人。通過點擊位于文檔右上方的“Insert” 圖標(biāo),你就可以增加自己的新的code chunks矢沿。

這些chunks中的 code的運行方式與常規(guī) R code相同,除了其輸出結(jié)果不會顯示在 Console或者 Plotspane中滥搭。你只需要點擊每個 chunk右側(cè)的綠色三角形,就能運行該 chunk。

一旦完成該文檔捣鲸,我們可以通過點擊上方的'Knit'圖標(biāo)將它導(dǎo)出為 HTML(或 PDF,或 MSWord文檔)瑟匆。這將以定義的格式導(dǎo)出一個包含所有的文本、代碼和結(jié)果的文檔栽惶。

我們在此僅對 RMarkdown做了一次非常簡短的介紹,其實它有很多的功能需要去探索愁溜。你可以訪問全面的在線指南 (https://bookdown.org/yihui/rmarkdown/),學(xué)習(xí)更多的關(guān)于 R Markdown的知識疾嗅。

OSF


開放科學(xué)框架(OpenScienceFramework,OSF)是促進(jìn)研究合作與重復(fù)工作(reproducibility)的一種開源線上平臺祝谚。 OSF實際上是 一個線上的資源庫宪迟,為了方便溝通合作以及使研究過程的所有步驟透明化,研究者們將他們的代碼和分析腳本存放其中交惯。OSF是開放科學(xué)運動的先鋒次泽,在過去的十年間其勢頭越來越大。我們鼓勵所有的元分析者通過提供他們所收集的數(shù)據(jù)以及用以分析的代碼的開放訪問席爽,推進(jìn)其研究與分析過程對公眾的透明化意荤。在 OSF默認(rèn)情況下, 你為自己創(chuàng)建的所有存儲庫都是私人的只锻,你可以自行決定是否公開玖像、 何時公開以及公開什么內(nèi)容。在下文中齐饮,我們將為你展現(xiàn)如何在 R 中設(shè)立 OSF repository捐寥、上傳與下載文件以及如何添加合作者。

1.訪問令牌

在正式開始使用 OSF前祖驱,你首先需要在這里 https://osf.io/創(chuàng)建一個個人賬戶握恳。然后你還需要生成一個訪問令牌(Access Token), 這樣就可以在 RStudio中直接操作我們的資源庫(repository)捺僻∠缤荩可 以在 https://osf.io/settings/tokens,點擊 Createtoken匕坯,生成訪問令牌束昵。


在 Scopes欄下国瓮,勾選所有方框并再次點擊 Createtoken墨榄。此時會出現(xiàn)你的personal access token,將它復(fù)制并保存到只有你能找到的地方抠璃。

2.安裝osfr包及認(rèn)證

為了能夠通過 R直接訪問OSF泞歉,我們需要使用 osfr包逼侦。你可以使用如下代碼安裝并加載它。

devtools::install_github('CenterForOpenScience/osfr')
library(osfr)

在使用 osfr包的功能前腰耙,需要使用 access token進(jìn)行身份認(rèn)證(authenticate)榛丢。 這一過程是很有必要的,因為只有自己(或者任何有權(quán)使用 token的人)才能更改 myrepository中的內(nèi)容挺庞。為 了進(jìn)行驗證晰赞,我們需要使用 osf_auth函數(shù),并給它提供我們剛剛收到的 access token(下面展示的 token是虛構(gòu),并不是我實際使用的 access token)

osf_auth("AtmuMZ3pSuS7tceSMz2NNSAmVDNTzpm2Ud87PcqfHZPtG9U3NLHkRPSt4eE3zRb4")

3.建立倉庫

通過使用 osfr掖鱼,我們現(xiàn)在能基于 R代碼創(chuàng)立一個 online
repository然走,假如,我正在進(jìn)行一項新的元分析項目戏挡,我想將個人的 data以及 R Markdownscript上傳至 OSF repository芍瑞,我把它命名為 “Meta-AnalysisProject”。為了能在 osf.iohttps://osf.io/dashboard)創(chuàng)建一個 project褐墅,可以使用 osf_create_project函數(shù)拆檬。我需要輸入我想創(chuàng)建的 repository的名字,并將它保存至名為 meta_analysis_project的 Robject中妥凳。

meta_analysis_project<-osf_create_project("Meta-Analysis Project")

通過使用 osf_open函數(shù)竟贯,我能夠訪問剛才新建的
repositort online。

osf_open(meta_analysis_project)

現(xiàn)在我的 repository已經(jīng)新建成功逝钥,我們可以繼續(xù)對它添加組件(components)屑那,就像在電腦中對文件夾操作一樣。假如我想創(chuàng)建兩個組件艘款,一個是 my datasets持际,另一個是 R Markdown scripts。 那么需要使用 osf_create_componentfunction哗咆。首先我必須為該函 數(shù)提供 R object for my repository(meta_analysis_project)选酗,然后為組件設(shè)置標(biāo)題。最后將它們作為 objects保存至我的R environment岳枷。

scripts<-osf_create_component(meta_analysis_project,title= "AnalysisScripts") 
datasets<-osf_create_component(meta_analysis_project,title= "Datasets")

如果現(xiàn)在轉(zhuǎn)到我的 repository線上頁面,你可以看到兩個組件已被添加呜叫。


4.更新和下載

我們可以使用 osf_upload函數(shù)空繁,將 data上傳至 OSF repository。 該函數(shù)需要提供我想要添加文件的 component/folder(就是剛才我們保存的 R object)以及輸入路徑朱庆。假如我們想上傳一個名為 “Analysis.rmd”R Markdown script盛泡,它當(dāng)前正保存在我們的 R project的子文件夾“scripts”中。我們可以使用下述代碼上傳娱颊。

osf_upload(scripts,"scripts/Analysis.rmd")

我們可以使用 osf_ls_files函數(shù)傲诵,訪問該腳本組件的內(nèi)容,以檢查該文檔是否已經(jīng)被成功上傳箱硕。

osf_ls_files(scripts)

在輸出結(jié)果中我們可以判斷上傳是否已經(jīng)成功拴竹。如果我們要下載一個文檔,我們可以從 osf_ls_files函數(shù)的 output中選擇一行剧罩,并將它 作為 osf_download 函數(shù)的 input栓拜,從而將該特定文件下載至我們計算機上的 project文件夾。

osf_download(osf_ls_files(scripts)[1,])

5.合作與共享

在我們的 OSFrepository網(wǎng)頁上,可以在“Contributors”欄下添加合作者幕与。



同時挑势,我們也可以在任何時候,通過點擊頁面右上角的 Make Public公開我們的 repository


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末啦鸣,一起剝皮案震驚了整個濱河市潮饱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌诫给,老刑警劉巖香拉,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蝙搔,居然都是意外死亡缕溉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門吃型,熙熙樓的掌柜王于貴愁眉苦臉地迎上來证鸥,“玉大人,你說我怎么就攤上這事勤晚⊥鞑悖” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵赐写,是天一觀的道長鸟蜡。 經(jīng)常有香客問我,道長挺邀,這世上最難降的妖魔是什么揉忘? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮端铛,結(jié)果婚禮上泣矛,老公的妹妹穿的比我還像新娘。我一直安慰自己禾蚕,他們只是感情好您朽,可當(dāng)我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著换淆,像睡著了一般哗总。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上倍试,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天讯屈,我揣著相機與錄音,去河邊找鬼县习。 笑死耻煤,一個胖子當(dāng)著我的面吹牛具壮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播哈蝇,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼棺妓,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了炮赦?” 一聲冷哼從身側(cè)響起怜跑,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吠勘,沒想到半個月后性芬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡剧防,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年植锉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片峭拘。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡俊庇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鸡挠,到底是詐尸還是另有隱情辉饱,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布拣展,位于F島的核電站彭沼,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏备埃。R本人自食惡果不足惜姓惑,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望按脚。 院中可真熱鬧挺益,春花似錦、人聲如沸乘寒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽伞辛。三九已至,卻和暖如春夯缺,著一層夾襖步出監(jiān)牢的瞬間蚤氏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工踊兜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留竿滨,地道東北人。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像于游,于是被迫代替她去往敵國和親毁葱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容