者:NSS
翻譯:楊金鴻
術(shù)語校對:韓海疇
全文校對:林亦霖
本文約3000字,建議閱讀7分鐘。
本文為帶大家了解R語言以及分段式的步驟教程!
人們學(xué)習(xí)R語言時普遍存在缺乏系統(tǒng)學(xué)習(xí)方法的問題。學(xué)習(xí)者不知道從哪開始,如何進行,選擇什么學(xué)習(xí)資源。雖然網(wǎng)絡(luò)上有許多不錯的免費學(xué)習(xí)資源,然而它們多過了頭,反而會讓人挑花了眼。
為了構(gòu)建R語言學(xué)習(xí)方法,我們在Vidhya和DataCamp中選一組綜合資源,幫您從頭學(xué)習(xí)R語言。這套學(xué)習(xí)方法對于數(shù)據(jù)科學(xué)或R語言的初學(xué)者會很有用;如果讀者是R語言的老用戶,則會由本文了解這門語言的部分最新成果。
R語言學(xué)習(xí)方法會幫助您快速、高效學(xué)習(xí)R語言。
前言
在開始學(xué)習(xí)之前,第一個要回答的問題是:為什么要用R語言?或者R語言為何如此有用?
R語言是一門快速發(fā)展的開源軟件,是SAS、STATA和SPSS這類商業(yè)軟件的競爭對手。就業(yè)市場對R語言的需求正在迅速上升,微軟等公司也同時承諾將致力讓R語言成為數(shù)據(jù)科學(xué)通用語言。
看看由Revolution Analytics制作的90秒視頻(https://www.youtube.com/watch?v=VlJnNSeO1uQ),您就知道R語言的用處。順便說下,微軟剛剛收購了Revolution Analytics。
步驟一:配置計算機環(huán)境
建立R語言學(xué)習(xí)環(huán)境最簡單方法是通過綜合R語言歸檔網(wǎng)絡(luò)(CRAN)下載(https://cran.r-project.org/)到您的本地計算機上。可以選擇Linux、Mac和Windows對應(yīng)二進制文件下載。
您可能會考慮使用R語言自帶的控制臺,但我們建議您安裝R語言集成開發(fā)環(huán)境(IDE)。RStudio(https://www.rstudio.com/)是最有名的IDE,它能讓R語言編碼更容易、更快,還能讓您輸入多行代碼、處理圖形、安裝和維護程序,有效引導(dǎo)您的編程環(huán)境。RStudio此外可以選用基于eclipse的Architect(http://www.openanalytics.eu/architect)。如果需要安裝圖形用戶界面(GUI),請選擇R-commander(http://www.rcommander.com/)或Deducer(http://www.deducer.org/pmwiki/index.php?n=Main.WindowsInstallation)。
課后作業(yè)
安裝R和RStudio。
安裝Rcmdr、rattle和Deducer程序包。以及推薦或依賴的程序包,包括GUI。
使用庫命令加載安裝程序,并打開GUI。
步驟二:R語言基礎(chǔ)學(xué)習(xí)
您應(yīng)該首先了解語言、庫和數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)知識。
如果您更傾向于在線交流方式學(xué)習(xí)R語法,DataCamp(https://www.datacamp.com/courses/free-introduction-to-r)提供的免費在線R教程是很好的資源。還可以選擇后續(xù)課程:中級R編程(https://www.datacamp.com/courses/intermediate-r)。另一種學(xué)習(xí)方法是在線版本swirl(https://www.datacamp.com/swirl-r-tutorial),它能讓您在類似RStudio環(huán)境中學(xué)習(xí)R語言。
在互動學(xué)習(xí)環(huán)境中,您可以選擇參加Coursera(https://www.coursera.org/specializations/jhu-data-science)或Edx(https://www.edx.org/course/introduction-r-programming-microsoft-dat204x-0)上mooc課程。
除了上述在線資源,您還可以考慮以下優(yōu)秀資源:
CRAN免費教學(xué)R語言(https://cran.r-project.org/doc/manuals/R-intro.pdf)。
Jared Lander’s R for Everyone(http://www.jaredlander.com/r-for-everyone/)
Quick-R(http://statmethods.net/)
專門學(xué)習(xí):閱讀、數(shù)據(jù)幀、表、概述、描述、加載和安裝包、使用繪圖命令可視化數(shù)據(jù)。
課后作業(yè)
使用DataCamp免費在線R教程,熟悉基本的R語法。
創(chuàng)建Github(http://github.com/)賬號。
通過google幫助,解決安裝過程中出現(xiàn)的問題。
安裝swirl包并學(xué)習(xí)R編程(見上文)。
步驟三:了解R社
強大社區(qū)的存在是R語言發(fā)展迅速、大獲成功的主要原因。社區(qū)中核心的是R語言的“包”生態(tài)系統(tǒng)。R語言程序包可以在CRAN、bioconductor、github和bitbucket中下載。在Rdocumentation(http://www.rdocumentation.org/)中,您可以輕松搜索來自CRAN、github和bioconductor中能滿足您當(dāng)前工作需要的程序包。與在R語言程序包生態(tài)系統(tǒng)同樣重要的是,您可以在R endeavours上輕松獲得幫助與反饋。首先,R內(nèi)置幫助系統(tǒng),您可以通過命令來訪問。同時,在Analytics Vidhya Discussions,Stack OverflowR語言是增長最快語言。R-bloggers(http://www.r-bloggers.com/)匯集許多R語言愛好者寫的博文。
課后作業(yè):
訪問CranTask Views了解R語言生態(tài)系統(tǒng)。
在http://r-bloggers.com上注冊并訂閱每日新聞。
步驟四:數(shù)據(jù)導(dǎo)入和操作
導(dǎo)入和操作數(shù)據(jù)是數(shù)據(jù)科學(xué)工作流程中重要步驟。R語言允許使用特定包導(dǎo)入不同數(shù)據(jù)格式,從而使您工作更輕松,如下:
readr:導(dǎo)入平面文件。
Readxl package:將excel文件轉(zhuǎn)化為R語言。
haven package包:讓您將SAS、STATA和SPSS數(shù)據(jù)文件導(dǎo)入R語言。
Databases:連接通過像RMySQL和RpostgreSQL包,使用DBI訪問和操作。
rvest: 網(wǎng)頁數(shù)據(jù)抓取。
一旦數(shù)據(jù)在工作環(huán)境中可用,您就可以使用下面程序包操作:
整理數(shù)據(jù)的tidyr程序包。
stringr包處理字符串操作。
對象數(shù)據(jù)幀,可以學(xué)習(xí)dplyr包輸入和輸出(https://www.datacamp.com/courses/dplyr-data-manipulation)。
需要執(zhí)行繁重數(shù)據(jù)爭用任務(wù)?試試data.table程序包。
執(zhí)行時間序列分析?嘗試一下像zoo,xts和quantmod程序包。
課后作業(yè)
通過“導(dǎo)入數(shù)據(jù)進入R語言”課程,或閱讀文章1、2、3、4。掌握導(dǎo)入數(shù)據(jù)軟件包。
通過RStudio觀看Data Wrangling with R 。(https://www.rstudio.com/resources/webinars/data-wrangling-with-r-and-rstudio/)
閱讀并練習(xí)如何使用dplyr、tidyr和data.table程序包。
步驟五:有效數(shù)據(jù)可視化
自己創(chuàng)建數(shù)據(jù)可視化作品是一件很自豪的事情。然而,數(shù)據(jù)可視化既是一項技能,也是一門藝術(shù)。許多學(xué)者閱讀Edward Tufte 的“可視化定量數(shù)據(jù)”原理,或者StephenFew的 “pitfalls on dashboard design”。也可以閱讀NathanYau在FlowingData 寫的博文,來獲得創(chuàng)建R語言可視化靈感。
1. 平面圖無處不在
R語言提供了多種創(chuàng)建圖形方法,使用原理圖創(chuàng)建圖形是標(biāo)準(zhǔn)的方法。然而,有一些好的工具(或包)使用更簡單的方式來創(chuàng)建,查看圖形。
在R語言中學(xué)習(xí)基本圖形語法是數(shù)據(jù)可視化中一種實用方法。
在R語言中g(shù)gplot是數(shù)據(jù)可視化中最重要的包,并且很受歡迎,網(wǎng)上有很多它的學(xué)習(xí)資源,比如在線ggplot2教程,cheatsheet ,和以及一本由哈德利韋翰編寫的教學(xué)書。
ggvis程序包允許您使用基本圖形語法創(chuàng)建交互式web圖形(參見教程)。
您知道Hans Rosling ted課程嗎?教您如何的用googleVis(一個帶有谷歌圖表接口)來重建圖表。
如果您遇到了繪制數(shù)據(jù)的問題,這篇文章會對您有所幫助。在這個CRAN任務(wù)視圖中可以查看到更多的可視化資源。或者查看R語言數(shù)據(jù)可視化指南。
2. 地圖無處不在
您對分析空間可視化數(shù)據(jù)感興趣嗎?學(xué)習(xí)本教程:介紹R語言空間數(shù)據(jù),您會輕松地使用這些包。
源自Google maps和ggmap開放街道的靜態(tài)圖片,可用來創(chuàng)建可視化空間數(shù)據(jù)和模型。
Ari Lamstein’s中的choroplethr程序包。
tmap 程序包
3. HTML插件
HTML插件是R語言可視化產(chǎn)品中非常有前景的插件,您可以用簡單的方式創(chuàng)建交互式web可視化(參見RStudio教程),掌握這種可視化方法將會成為R語言學(xué)習(xí)中必備技能。其帶來的視覺效果會給您朋友和同事留下深刻印象。
leaflet創(chuàng)建動態(tài)圖片。
使用dygraphs生成時間序列數(shù)據(jù)圖表。
互動表(datatable)。
DiagrammeR創(chuàng)建圖和流程圖。
MetricsGraphics創(chuàng)建散點圖、線圖和直方圖。
課后作業(yè)
理解基本圖形語法原理。
學(xué)習(xí)ggplot2教程。
使用RStudio環(huán)境學(xué)習(xí)html插件。
步驟六:數(shù)據(jù)挖掘、機器學(xué)習(xí)
對于新的統(tǒng)計數(shù)據(jù)學(xué)習(xí)方法,我們推薦下列資源:
Andrew Conway’s課程:R語言統(tǒng)計數(shù)據(jù)簡介。
杜克大學(xué)數(shù)據(jù)分析和統(tǒng)計推斷。
R語言實用數(shù)據(jù)科學(xué)。
約翰霍普金斯大學(xué)數(shù)據(jù)科學(xué)專業(yè)課程。
R語言數(shù)據(jù)科學(xué)使用指南。
如果您想提高機器學(xué)習(xí)能力,可以考慮從以下教程開始學(xué)習(xí):
機器學(xué)習(xí)算法要點。
自行車共享大賽--一套R語言完整解決方案。
Kaggle上的機器學(xué)習(xí)課程。
掌握機器學(xué)習(xí)。
介紹機器學(xué)習(xí)。
確保在相關(guān)的CRAN任務(wù)視圖中查看到R語言可用的機器學(xué)習(xí)資源。
課后作業(yè)
從統(tǒng)計學(xué)課程開始入門。
學(xué)習(xí)Kaggle上免費機器學(xué)習(xí)課程。
看Rattle中的一些R語言數(shù)據(jù)挖掘書。
可以從這本小冊子上學(xué)習(xí)時間序列——A Little Book for Time Series in R .
步驟七:報告結(jié)果
與數(shù)據(jù)科學(xué)愛好者交流成果,分享見解是一件很重要的事情。幸運的是,R語言針對這個問題有一些非常實用工具。
第一個工具是R Markdown,采用knitr和pandoc復(fù)制方式生成您的數(shù)據(jù)分析結(jié)果報告。使用R markdown工具,R語言最終生成文檔,替換R語言代碼。文檔可以是html、word、pfd、ioslides等格式。您可以通過本教程學(xué)到更多知識并使用cheatsheet作為參考資料。
第二個工具是ReporteRs,它是個創(chuàng)建Microsoft(Worddocx和Powerpoint pptx)和html R語言文檔程序包,并可以在Windows、Linux、Unix和Mac OS系統(tǒng)上運行。像R Markdown工具一樣自動生成R語言報告,點擊這里我們來看看如何操作。
第三個是Shiny,目前R語言中最令人興奮的工具。使R語言構(gòu)建交互式web應(yīng)用程序變得非常容易。您可以把分析報告轉(zhuǎn)換為交互式web應(yīng)用程序,您不需要了解HTML、CSS或Javascript相關(guān)知識。如果您想要學(xué)習(xí)Shiny ,請點擊RStudio learning portal。
課后作業(yè)
使用RMarkdown或ReporteRs創(chuàng)建第一個交互式報告。
嘗試構(gòu)建一個Shiny應(yīng)用。
練習(xí)
只有通過大量練習(xí)才能成為優(yōu)秀R語言程序員。因此,要定期解決數(shù)據(jù)科學(xué)中的問題。我們的建議是趕緊開始與Kaggle上的數(shù)據(jù)科學(xué)家交流。
在解決問題中測試自己的R語言水平--練習(xí)中的問題。
步驟八:時間序列分析
R語言有一個用于專屬任務(wù)視圖時間序列。如果你想在R語言中做一些時間序列分析,這將是您開始的地方。您很快會發(fā)現(xiàn)工具的強大。
想要從在線資源中掌握時間序列分析是件不容易的事情。好的切入點是一本關(guān)于時間序列的書或者選擇《原理與實踐》這本書。在程序包方面,您需要熟悉Zoo與xts程序包。Zoo為您提供了常用的保存時間序列對象格式,而xts供了操作時間序列的數(shù)據(jù)集工具。
輔助資源: 時間序列綜合教程。
課后作業(yè)
選擇上述列出的時間系列教程,開始您的分析。
使用quantmod或quandl程序軟件包下載財務(wù)數(shù)據(jù),開始您的時間序列分析。
使用諸如dygraphs的程序包創(chuàng)建您的可視化時間序列數(shù)據(jù)和分析。
文本挖掘一個重要工具
學(xué)習(xí)文本挖掘,您可以從edge課程中學(xué)習(xí)。雖然課程已經(jīng)結(jié)束,但是您仍然可以訪問這些課程。
練習(xí)
文本挖掘競賽--一套R語言的完整解決方案。
步驟九:成為R語言大師
現(xiàn)在您已經(jīng)掌握了大部分R語言數(shù)據(jù)分析,是時候給出一些高級課程資源了。您很可能已經(jīng)知道其中的一些內(nèi)容,但不妨看看這些教程。
Hadley Wickham的高級R語言教程。
在Hadoop、MongoDB或NoSQL中使用R語言。
微軟的RevoScaleR 程序包
原文鏈接:
https://www.analyticsvidhya.com/learning-paths-data-science-business-analytics-business-intelligence-big-data/learning-path-r-data-science/
楊金鴻,北京護航科技有限公司員工,在業(yè)余時間喜歡翻譯一些技術(shù)文檔。喜歡閱讀有關(guān)數(shù)據(jù)挖掘、數(shù)據(jù)庫之類的書,學(xué)習(xí)java語言編程等,希望能在數(shù)據(jù)派平臺上熟識更多愛好相同的伙伴,今后能在數(shù)據(jù)科學(xué)的道路上走的更遠,飛的更遠。
能轉(zhuǎn)換:R圖和統(tǒng)計表轉(zhuǎn)成發(fā)表級的Word、PPT、Excel、HTML、Latex、矢量圖等
R包export可以輕松的將R繪制的圖和統(tǒng)計表輸出到 Microsoft Office (Word、PowerPoint和Excel)、HTML和Latex中,其質(zhì)量可以直接用于發(fā)表。
export包可以在Windows、Ubuntu和Mac上跨平臺運行。不過有些Mac發(fā)行版默認(rèn)情況下沒有安裝cairo設(shè)備,需要自行安裝。如果Mac用戶已安裝XQuartz,這個問題就解決了,它可以從https://www.xquartz.org/免費獲得。
install.packages("export")
install.packages("officer")
install.packages("rvg")
install.packages("openxlsx")
install.packages("ggplot2")
install.packages("flextable")
install.packages("xtable")
install.packages("rgl")
install.packages("stargazer")
install.packages("tikzDevice")
install.packages("xml2")
install.packages("broom")
install.packages("devtools")
devtools::install_github("tomwenseleers/export")
該包主要包括以下幾種轉(zhuǎn)換
使用幫助信息如下:
graph2bitmap(x=NULL, file="Rplot", fun=NULL, type=c("PNG","JPG", "TIF"),
aspectr=NULL, width=NULL, height=NULL, dpi=300,scaling=100,
font=ifelse(Sys.info()["sysname"]=="Windows", "Arial",
"Helvetica")[[1]], bg="white", cairo=TRUE,
tiffcompression=c("lzw", "rle", "jpeg", "zip", "lzw+p", "zip+p"),
jpegquality=99, ...)
安裝完 export包后,先調(diào)用該包
library(export)
library(ggplot2)
library(datasets)
x=qplot(Sepal.Length, Petal.Length, data=iris,
color=Species, size=Petal.Width, alpha=I(0.7))
qplot()的意思是快速作圖,利用它可以很方便的創(chuàng)建各種復(fù)雜的圖形,其他系統(tǒng)需要好幾行代碼才能解決的問題,用qplot只需要一行就能完成。
使用半透明的顏色可以有效減少圖形元素重疊的現(xiàn)象,要創(chuàng)建半透明的顏色,可以使用alpha圖形屬性,其值從0(完全透明)到1(完全不透明)。更多ggplot2繪圖見ggplot2高效實用指南 (可視化腳本、工具、套路、配色) (往期教程更有很多生物信息相關(guān)的例子)。
鳶尾花(iris)是數(shù)據(jù)挖掘常用到的一個數(shù)據(jù)集,包含150個鳶尾花的信息,每50個取自三個鳶尾花種之一(setosa,versicolour或virginica)。每個花的特征用下面的5種屬性描述萼片長度(Sepal.Length)、萼片寬度(Sepal.Width)、花瓣長度(Petal.Length)、花瓣寬度(Petal.Width)、類(Species)。
在console里展示數(shù)據(jù)圖 (長寬比自己調(diào)節(jié)):
# 需運行上面的ggplot2繪圖
# Create a file name
# 程序會自動加后綴
filen <- "output_filename" # or
# filen <- paste("YOUR_DIR/ggplot")
# There are 3 ways to use graph2bitmap():
### 1. Pass the plot as an object
graph2png(x=x, file=filen, dpi=400, height=5, aspectr=4)
graph2tif(x=x, file=filen, dpi=400, height=5, aspectr=4)
graph2jpg(x=x, file=filen, dpi=400, height=5, aspectr=4)
### 2. Get the plot from current screen device
# 注意這個x,是運行命令,展示圖像
x
graph2png(file=filen, dpi=400, height=5, aspectr=4)
graph2tif(file=filen, dpi=400, height=5, aspectr=4)
graph2jpg(file=filen, dpi=400, height=5, aspectr=4)
### 3. Pass the plot as a functio
plot.fun <- function(){
print(qplot(Sepal.Length, Petal.Length, data=iris,
color=Species, size=Petal.Width, alpha=0.7))
}
graph2png(file=filen, fun=plot.fun, dpi=400, height=5, aspectr=4)
graph2tif(file=filen, fun=plot.fun, dpi=400, height=5, aspectr=4)
graph2jpg(file=filen, fun=plot.fun, dpi=400, height=5, aspectr=4)
轉(zhuǎn)換后的圖形:
大部分圖的細節(jié)修改都是用代碼完成的,不需要后續(xù)的修飾;但如果某一些修改比較特異,不具有程序的通用性特征,或?qū)崿F(xiàn)起來比較困難,就可以考慮后期修改。比如用AI文章用圖的修改和排版。熟悉PPT的,也可以用PPT,這時R的圖導(dǎo)出PPT,就要用到graph2office系列函數(shù)了。
graph2ppt: 將當(dāng)前R圖保存到Microsoft Office PowerPoint/LibreOffice Impress演示文稿中。
graph2doc:將當(dāng)前的R圖保存到Microsoft Office Word/LibreOffice Writer文檔中。
函數(shù)參數(shù)展示和解釋
graph2office(x=NULL, file="Rplot", fun=NULL, type=c("PPT", "DOC"),
append=FALSE, aspectr=NULL, width=NULL, height=NULL,scaling=100,
paper="auto", orient=ifelse(type[1]=="PPT","landscape", "auto"),
margins=c(top=0.5, right=0.5, bottom=0.5, left=0.5),
center=TRUE, offx=1, offy=1, upscale=FALSE, vector.graphic=TRUE, ...)
# 需運行上面的ggplot2繪圖
# Create a file name
filen <- "output_filename" # or
# filen <- paste("YOUR_DIR/ggplot")
# There are 3 ways to use graph2office():
### 1. Pass the plot as an object
# 導(dǎo)出圖形對象
graph2ppt(x=x, file=filen)
graph2doc(x=x, file=filen, aspectr=0.5)
### 2. Get the plot from current screen device
# 導(dǎo)出當(dāng)前預(yù)覽窗口呈現(xiàn)的圖
x
graph2ppt(file=filen, width=9, aspectr=2, append=TRUE)
graph2doc(file=filen, aspectr=1.7, append=TRUE)
### 3. Pass the plot as a function
# 導(dǎo)出自定義函數(shù)輸出的一系列圖
graph2ppt(fun=plot.fun, file=filen, aspectr=0.5, append=TRUE)
graph2doc(fun=plot.fun, file=filen, aspectr=0.5, append=TRUE)
導(dǎo)出到office(ppt和word)中的圖形,是可編輯的:
其它導(dǎo)出到ppt的例子(設(shè)置長寬比)
graph2ppt(file="ggplot2_plot.pptx", aspectr=1.7)
增加第二張同樣的圖,9英寸寬和A4長寬比的幻燈片 (append=T,追加)
graph2ppt(file="ggplot2_plot.pptx", width=9, aspectr=sqrt(2), append=TRUE)
添加相同圖形的第三張幻燈片,寬度和高度固定
graph2ppt(file="ggplot2_plot.pptx", width=6, height=5, append=TRUE)
禁用矢量化圖像導(dǎo)出
graph2ppt(x=x, file=filen, vector.graphic=FALSE, width=9, aspectr=sqrt(2), append=TRUE)
用圖填滿幻燈片
graph2ppt(x=x, file=filen, margins=0, upscale=TRUE, append=TRUE)
函數(shù)參數(shù)解釋
graph2vector(x=NULL, file="Rplot", fun=NULL, type="SVG",aspectr=NULL,
width=NULL, height=NULL, scaling=100,
font=ifelse(Sys.info()["sysname"]=="Windows",
"Arial","Helvetica")[[1]], bg="white", colormodel="rgb",
cairo=TRUE,fallback_resolution=600, ...)
#需運行上面的ggplot2繪圖
# Create a file name
filen <- "output_filename" # or
# filen <- paste("YOUR_DIR/ggplot")
# There are 3 ways to use graph2vector():
### 1. Pass the plot as an object
# 導(dǎo)出圖形對象
graph2svg(x=x, file=filen, aspectr=2, font="Times New Roman",
height=5, bg="white")
graph2pdf(x=x, file=filen, aspectr=2, font="Arial",
height=5, bg="transparent")
graph2eps(x=x, file=filen, aspectr=2, font="Arial",
height=5, bg="transparent")
# 導(dǎo)出當(dāng)前預(yù)覽窗口呈現(xiàn)的圖
### 2. Get the plot from current screen device
x
graph2svg(file=filen, aspectr=2, font="Arial",
height=5, bg="transparent")
graph2pdf(file=filen, aspectr=2, font="Times New Roman",
height=5, bg="white")
graph2eps(file=filen, aspectr=2, font="Times New Roman",
height=5, bg="white")
# 導(dǎo)出自定義函數(shù)輸出的一系列圖
### 3. Pass the plot as a function
graph2svg(file=filen, fun=plot.fun, aspectr=2, font="Arial",
height=5, bg="transparent")
graph2pdf(file=filen, fun=plot.fun, aspectr=2, font="Arial",
height=5, bg="transparent")
graph2eps(file=filen, fun=plot.fun, aspectr=2, font="Arial",
height=5, bg="transparent")
rgl2png: 將當(dāng)前的rgl 3D圖形保存為PNG格式。
rgl2bitmap(file="Rplot", type=c("PNG"))
# Create a file name
filen <- tempfile("rgl") # or
# filen <- paste("YOUR_DIR/rgl")
# Generate a 3D plot using 'rgl'
x=y=seq(-10, 10, length=20)
z=outer(x, y, function(x, y) x^2 + y^2)
rgl::persp3d(x, y, z, col='lightblue')
# Save the plot as a png
rgl2png(file=filen)
# Note that omitting 'file' will save in current directory
生成的3D圖形:
將生成的3D圖形保存為PNG格式:
table2spreadsheet(x=NULL, file="Rtable", type=c("XLS", "CSV",
"CSV2"), append=FALSE, sheetName="new sheet", digits=2,
digitspvals=2, trim.pval=TRUE, add.rownames=FALSE, ...)
# Create a file name
filen <- "table_aov" # or
# filen <- paste("YOUR_DIR/table_aov")
# Generate ANOVA output
fit=aov(yield ~ block + N * P + K, data=npk) # 'npk' dataset from base 'datasets'
x=summary(fit)
# Save ANOVA table as a CSV
### Option 1: pass output as object
# 輸出對象
table2csv(x=x,file=filen, digits=1, digitspvals=3, add.rownames=TRUE)
# 屏幕輸出導(dǎo)出到文件
### Option 2: get output from console
summary(fit)
table2csv(file=filen, digits=2, digitspvals=4, add.rownames=TRUE)
# Save ANOVA table as an Excel
# Without formatting of the worksheet
x
table2excel(file=filen, sheetName="aov_noformatting", digits=1, digitspvals=3, add.rownames=TRUE)
# 更多參數(shù)
# With formatting of the worksheet
table2excel(x=x,file=filen, sheetName="aov_formated", append=TRUE, add.rownames=TRUE, fontName="Arial", fontSize=14, fontColour=rgb(0.15,0.3,0.75), border=c("top", "bottom"), fgFill=rgb(0.9,0.9,0.9), halign="center", valign="center", textDecoration="italic")
原始數(shù)據(jù)的表格:
轉(zhuǎn)換格式之后的,在console中的數(shù)據(jù):
文件(csv和excel)中表格數(shù)據(jù):
table2ppt: 導(dǎo)出統(tǒng)計輸出到Microsoft Office PowerPoint/ LibreOffice Impress演示文稿中的表
table2doc: 將統(tǒng)計輸出導(dǎo)出到Microsoft Office Word/ LibreOffice Writer文檔中的表
table2office(x=NULL, file="Rtable", type=c("PPT", "DOC"),
append=FALSE, digits=2, digitspvals=2, trim.pval=TRUE,
width=NULL, height=NULL, offx=1, offy=1,
font=ifelse(Sys.info()["sysname"]=="Windows", "Arial",
"Helvetica")[[1]], pointsize=12, add.rownames=FALSE)
# Create a file name
filen <- "table_aov"
# filen <- paste("YOUR_DIR/table_aov")
# Generate ANOVA output
fit=aov(yield ~ block + N * P + K, data=npk) # 'npk' dataset from base 'datasets'
# Save ANOVA table as a PPT
### Option 1: pass output as object
x=summary(fit)
table2ppt(x=x,file=filen, digits=1, digitspvals=3, add.rownames=TRUE)
### Option 2: get output from console
summary(fit)
table2ppt(x=x,file=filen, width=5, font="Times New Roman", pointsize=14, digits=4, digitspvals=1, append=TRUE, add.rownames=TRUE) # append table to previous slide
# Save ANOVA table as a DOC file
table2doc(x=x,file=filen, digits=1, digitspvals=3, add.rownames=TRUE)
summary(fit)
table2doc(file=filen, width=3.5, font="Times New Roman", pointsize=14, digits=4, digitspvals=1, append=TRUE, add.rownames=TRUE) # append table at end of document
將表格數(shù)據(jù)導(dǎo)出到ppt和word中:
table2html: 導(dǎo)出統(tǒng)計輸出到HTML表。
table2tex(x=NULL, file="Rtable", type="TEX", digits=2,
digitspvals=2, trim.pval=TRUE, summary=FALSE, standAlone=TRUE,
add.rownames=FALSE, ...)
summary:是否匯總數(shù)據(jù)文件。
standAlone:導(dǎo)出的Latex代碼應(yīng)該是獨立可編譯的,還是應(yīng)該粘貼到另一個文檔中。
add.rownames:是否應(yīng)該將行名添加到表中(在第一列之前插入一列)。
# Create a file name
filen <- tempfile(pattern="table_aov") # or
# filen <- paste("YOUR_DIR/table_aov")
# Generate ANOVA output
fit=aov(yield ~ block + N * P + K, data=npk) # 'npk' dataset from base 'datasets'
x=summary(fit)
# Export to Latex in standAlone format
table2tex(x=x,file=filen,add.rownames=TRUE)
# Export to Latex to paste in tex document
summary(fit) # get output from the console
table2tex(file=filen, standAlone=FALSE,add.rownames=TRUE)
# Export to HTML
table2html(x=x,file=filen) # or
summary(fit) # get output from the console
table2html(file=filen,add.rownames=TRUE)
導(dǎo)出到html或tex中的表格數(shù)據(jù):
擊上方關(guān)注,All in AI中國
我經(jīng)常告訴我的同事和其他程序員一些我在R中使用的簡單的東西,它們可以幫助我完成需要改進的任務(wù)。這些方法從簡單的快捷方式、鮮為人知的函數(shù)到方便的小技巧都有。
由于R生態(tài)系統(tǒng)如此豐富且不斷增長,人們往往會錯過一些能夠幫助他們完成任務(wù)的事情。所以我經(jīng)常得到一些驚訝的反應(yīng),就像我從來不知道那樣!
這里有十件讓我的生活更輕松的事情。如果你已經(jīng)全部了解它們,很抱歉浪費你的閱讀時間,請考慮添加一些評論,其中包含你認(rèn)為對其他讀者有益的其他內(nèi)容。
我喜歡swith()。它基本上是根據(jù)另一個變量的值來選擇其值的if語句的一個方便的縮寫。我發(fā)現(xiàn)當(dāng)我編寫代碼時,根據(jù)您先前的選擇需要加載不同的數(shù)據(jù)集時,它特別有用。例如,如果您有一個名為animal的變量,并且您想要根據(jù)動物是狗、貓還是兔子加載不同的數(shù)據(jù)集,您可以寫下:
data <- read.csv( switch(animal, "dog"="dogdata.csv", "cat"="catdata.csv", "rabbit"="rabbitdata.csv") )
這在Shiny應(yīng)用程序中特別有用,您可能希望根據(jù)一個或多個輸入菜單選項加載不同的數(shù)據(jù)集甚至環(huán)境文件。
這不僅僅是一個R技巧,更多是關(guān)于RStudio IDE的更多內(nèi)容,但是可用于常用命令的快捷鍵非常有用,可以節(jié)省大量的輸入時間。我最喜歡的是Ctrl + Shift + M用于管道運算符%>%,用Alt + - 用于賦值運算符< - 。如果你想看到一整套這些很棒的快捷方式,只需在RStudio中鍵入Atl + Shift + K即可。
如果您希望快速啟動Shiny儀表板,并且操作簡單,那么flexdashboard軟件包可以滿足您的一切需求。它提供了簡單的HTML快捷方式,可以輕松構(gòu)建側(cè)邊欄,并將顯示組織成行和列。它還有一個超級靈活的標(biāo)題欄,您可以將應(yīng)用程序組織到不同的頁面,并放入圖標(biāo)和指向Github代碼或電子郵件地址或其他任何內(nèi)容的鏈接。作為在RMarkdown中運行的軟件包,它還允許您將所有應(yīng)用程序保存在一個Rmd文件中,而不是需要將其分解為單獨的服務(wù)器和UI文件,例如shinydashboard。每當(dāng)我需要創(chuàng)建儀表板的簡單原型版本,然后再將其轉(zhuǎn)移到更高級的設(shè)計時,我就會使用flexdashboard。我經(jīng)常可以使用flexdashboard在一小時內(nèi)啟動并運行儀表板。
R Shiny開發(fā)可能令人沮喪,特別是當(dāng)您收到通用錯誤消息時,無法幫助您了解底層出現(xiàn)的問題。隨著Shiny的發(fā)展,越來越多的驗證和測試功能被添加,以幫助更好地診斷和警告特定發(fā)生的錯誤。req()函數(shù)允許您阻止操作發(fā)生,除非環(huán)境中存在另一個變量,但是靜默地執(zhí)行操作而不顯示錯誤。因此,您可以使UI元素的顯示以先前的操作為條件。例如,參考我上面的例子1:
output$go_button <- shiny::renderUI({ # only display button if an animal input has been chosen shiny::req(input$animal) # display button shiny::actionButton("go", paste("Conduct", input$animal, "analysis!") ) })
在呈現(xiàn)輸出之前進行validate()檢查,并且如果某個條件未滿足,則允許您返回定制的錯誤消息,例如,如果用戶上載了錯誤的文件:
# get csv input file inFile <- input$file1 data <- inFile$datapath # render table only if it is dogs shiny::renderTable({ # check that it is the dog file, not cats or rabbits shiny::validate( need("Dog Name" %in% colnames(data)), "Dog Name column not found - did you load the right file?" ) data })
如果要共享需要登錄憑據(jù)到數(shù)據(jù)庫之類的代碼,則可以使用系統(tǒng)環(huán)境來避免將這些憑據(jù)發(fā)布到Github或其他可能存在風(fēng)險的空間。您可以將憑據(jù)作為命名環(huán)境變量放在R會話中,例如:
然后在共享腳本中,您可以使用這些環(huán)境變量登錄。例如:
# get csv input file inFile <- input$file1 data <- inFile$datapath # render table only if it is dogs shiny::renderTable({ # check that it is the dog file, not cats or rabbits shiny::validate( need("Dog Name" %in% colnames(data)), "Dog Name column not found - did you load the right file?" ) data })
更方便的是,如果你經(jīng)常使用這些憑證,你可以在操作系統(tǒng)中將它們設(shè)置為環(huán)境變量,這樣當(dāng)你在R中工作時它們總是可用,但你不必在你的代碼中顯示它們。
您的代碼可能不像您所希望的那樣整潔,您沒有時間對其進行編輯。stylerpackage具有許多功能,允許自動重新編碼代碼以匹配tidyverse風(fēng)格。它非常簡單,就像在你的凌亂腳本上運行styler :: style_file(),它將為你做很多(雖然不是全部)工作。
所以你寫了一個可愛的R Markdown文檔,你已經(jīng)分析了很多關(guān)于狗的事實。然后你會被告知 - '不,我對貓更感興趣。如果將R標(biāo)記文檔參數(shù)化,則只需一個命令就可以自動生成關(guān)于貓的類似報告。
您可以通過在R Markdown文檔的YAML標(biāo)題中定義參數(shù),并為每個參數(shù)賦值來完成此操作。例如:
現(xiàn)在,您可以將這些變量寫入文檔中的R代碼,如params 和
years_of_study。如果您正常編織文檔,它將根據(jù)值變量使用這些參數(shù)的默認(rèn)值進行編織。但是,如果您通過在RStudio的Knit下拉列表中選擇此選項來編織參數(shù)(或使用knit_with_parameters()),則會出現(xiàn)一個可愛的菜單選項,您可以在編織文檔之前選擇參數(shù)。
用參數(shù)編織
revealjs是一個包,它允許您使用帶有嵌入式R代碼的直觀幻燈片導(dǎo)航菜單以HTML格式創(chuàng)建精美的演示文稿。它可以在R Markdown中使用,并且具有非常直觀的HTML快捷方式,允許您使用各種樣式選項創(chuàng)建漂亮幻燈片的嵌套邏輯結(jié)構(gòu)。演示文稿是用HTML表示的,這意味著人們可以通過他們的平板電腦或手機聽你說話,這非常方便。您可以通過安裝包然后在YAML標(biāo)頭中調(diào)用它來設(shè)置revealjspresentation。這是我最近使用revealjs發(fā)表的演講的YAML標(biāo)題示例
-- title: "Exporing the Edge of the People Analytics Universe" author: "Keith McNulty" output: revealjs::revealjs_presentation: center: yes template: starwars.html theme: black date: "HR Analytics Meetup London - 18 March, 2019" resource_files: - darth.png - deathstar.png - hanchewy.png - millenium.png - r2d2-threepio.png - starwars.html - starwars.png - stormtrooper.png ---
這是一個示例頁面。您可以在此處找到代碼和演示文稿hr_meetup_london/presentation.Rmd at master · keithmcnulty/hr_meetup_london · GitHub
使用revealjs輕松進行在線演示
大多數(shù)人沒有充分利用R Shiny中提供的HTML標(biāo)簽。有110個標(biāo)簽提供各種HTML格式和其他命令的快捷方式。最近我構(gòu)建了一個應(yīng)用程序,花了很長時間來執(zhí)行任務(wù)。知道用戶在等待它完成時可能會出現(xiàn)多任務(wù),我使用標(biāo)簽$ audio讓應(yīng)用程序大肆宣傳,以便在任務(wù)完成時提醒用戶。
這個贊美包非常簡單但也很棒,給用戶帶來了好評。雖然這看起來像是毫無意義的自我欽佩,但它實際上在編寫R包時非常有用,如果他們做正確的事情,例如如果一個過程成功完成,你可以向某人提供贊美或鼓勵。您也可以將它放在復(fù)雜腳本的末尾,以便在成功運行時為您提供額外的快樂。
最初我是一名純數(shù)學(xué)家,然后我成為了一名心理測量學(xué)家和一名數(shù)據(jù)科學(xué)家。我熱衷于將所有這些學(xué)科的嚴(yán)謹(jǐn)性應(yīng)用于復(fù)雜的人們問題。我也是一名編碼極客,也是日本角色扮演游戲的忠實粉絲。
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。