前言
在之前章節(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.io (https://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