R 中的哪些命令或者包讓你相見恨晚?
兩三天這麼多回答,用 R 的人這麼多嗎???
看了這麼多答案,覺得 Hadley Wickhamhad.co.nz 在R使用者的地位好高啊。其實我也覺得Hadley的每個包都很好用,尤其是CRAN - Package plyr(他寫的包中,這個接觸得比較晚,所以感覺更加相見恨晚)。其他作者的包有:
- CRAN - Package xkcd 把你的圖繪製成xkcd http://xkcd.com風格
- CRAN - Package magrittr 向前管道操作符以及其他一些操作符的別名
- CRAN - Package knitr 自動化報告生成全靠她了
- CRAN - Package functional 函數編程的時候會用到 PS :文檔寫得比較有意思,比如這個
- CRAN - Package Rcpp 看到了才發現原來R和cpp能這麼方便地結合
- Slidify 用markdown做出漂亮的slides
其他的想到再補充吧。
我從開始學R到現在一直都在發現「相見恨晚」的R包。
分析與建模:- Matrix包:先進的稀疏矩陣處理,不了解稀疏矩陣概念的時候內存佔用和運行速度都不忍直視。
- Reshape2/ddply:數據處理不用愁。
- *apply系列:比for更好用的函數,其中tapply遠不如lapply流行,但是實用程度不在其下。實際上lapply有沒有變快得看各人的實現,因為雖然lapply調用了C實現,但是它還是要回頭調用在R里用戶定義的函數才能做計算,這個函數速度如何才是關鍵。
- compiler包:即使代碼里有for也可以加速。
- foreach:通用的並行介面,跨平台多功能。
- lubridate:處理時間日期格式不求人。
- gbm:效果和randomForest相近,但是佔用內存很少很幸福,而且支持多核 CrossValidation 運算。
- stats::optim():做優化的最傻瓜選擇。不信看這個三行R代碼做出SVM:http://weibo.com/1459604443/A3x1VtIQn,不懂牛頓法也沒關係。
- knitr/slidify:knitr是 @謝益輝 的代表作。做報告、幻燈片 so easy,但是slidify的作者不喜歡寫文檔,所以很頭疼。
- shiny:用R生成Web App,後端強勁介面統一。例如:https://hetong.shinyapps.io/imgsvd 。
- recharts:在R中方便快捷地生成可交互圖形,再也不用從R換到js了。
其他:
- devtools::install_github():脫離CRAN強權統治,Github讓世界更美好。
- base::match():很多情況下比which,is.element不知高到哪裡去了。
- utils::read.table():設置nrows能提前分配內存,設置comment.char=""與colClasses更能加快讀入。
- OpenBLAS庫:雖然不是R包,但是多核CPU上對矩陣運算的加速效果實在是太方便明顯了,而且Ubuntu上安裝方便,並不需要重新編譯R。
- 定義啟動項:如果對stringsAsFactors永遠默認為TRUE深痛惡覺,可以修改Rprofile.site文件,加上每次啟動都自動運行的命令。 @任坤 在評論中提到:定義啟動項比較危險,不注意的話會使得代碼的可移植性出現問題哦,放到別人電腦上一運行發現各種factor。
- 升級R包:R的版本更迭之後,可以把老R包複製到新版本的library目錄下,然後運行 update.packages(checkBuilt=TRUE, ask=FALSE) ,這是官方的提示,放在FAQ里,不知道有多少人留意了:R for Windows FAQ
reshape2, dplyr, ggplot2, Rcpp, testthat
還有自己寫的包:pipeR, rlist, rprintf by renkun-ken
更具體的介紹可參見 R語言中,你最常用的軟體包有哪些,請簡述功能及特點?shiny,可以直接生成網頁,可以用來做動態展示。
補充一下金融和時間序列一類的包:
xts, zoo: 時間序列數據結構
quantmod, TTS: 金融交易策略portfolio: 投資組合還有機器學習一類:
ROCR: 計算各種supervised machine learning的性能度量,如AUC, FP, FN等命令介紹
導入csv文件時不想寫路徑,直接輸入下面這行命令,然後ctrl+enter,直接跳出文件框自己選擇相應文件就好,很方便!
read.csv(file.choose())
導出csv文件,一行命令
write.csv(data, file = "cit1.csv", row.names = FALSE)
包介紹
以下所有包都可以通過install.packages("包名字"),調用包直接library(包名字)
1.AER
發愁沒有數據練手?AER包有各種有意思的數據集,比如2011年出軌調查數據集,銀行薪水變化,美國航班數據等等等等,各種數據集,詳情可見AER包介紹
2.Amelia
什麼?你覺得缺失值看錶格太麻煩?Amelia可以將缺失值可視化,且只需要兩行代碼
library(Amelia)
missmap(data,main = "Missing Map",col=c("yellow","black"),legend=FALSE)
3.ggtheme
顏狗必備包,經濟學人的統計圖表
可以參考這篇文章如何做一個好色之「圖」(1):從 ggthemes 提取華爾街日報的圖表配色
4.magrittr
%管道函數必備包
管道函數kaggle上很多選手都有用,長這樣%&>%,有種層層迭代的感覺,後來學習了下發現真的很方便,我翻譯了一篇(不過文章有些長),有興趣可以去瞄瞄翻譯:用R語言進行數據清洗
5.dplyr
合併兩個相似表
「dplyr專註接受dataframe對象, 大幅提高了速度,並且提供了更穩健的資料庫介面」
這麼說抽象了點,舉個例子好了,比如A表B表唯一不同的是A表沒有性別這一欄,我們可以將這兩個表合併生成新的表,
如果你直接合併,抱歉,無法生成表~
data &<- bind_rows(train,test)
train.row &<- 1:nrow(train)
test.row &<- (1+nrow(train)):(nrow(train)+nrow(test))
只能變成這樣
只有加了導入包library(dplyr)才能生成新的表~自動匹配的那種~
6.shiny
近期發現的新寵,也是在研究中,可以動態的展示圖表,方便鏈接分析研究報告給其他人~~
其他用到再補充
lapply, mapply, split, aggregate, merge
ggplot2包作為一個學物理的,做polymer data mining 的我也來強答一個。。最近在做kaggle
我的workflow 基本就是這麼些包
library(tidyverse) # 樓上已經說了Hadley大神的包,一個頂七個。
library(data.table)# 快速讀入數據,我一般讀入後都轉成data frame
library(caret) # 這個包貌似還沒人提過 (後來發現有一個人提過),這個有兩百多個machine learning的模型可以用包括xgboost的xgbLinear 和xgbTree model。。classification or regression 任君選擇。。。
library(doParallel) # 用來做parallel computing的包,非常容易上手結合caret 可以容易把cross-validation parallelize。
library(foreach) # 這個也和doParallel 兼容,可以把一些常用的for loop parallelize。
library(sparkR) #這是一個R和spark的介面,正在學習玩弄中。
這個是我的blog PhD leaving academia
如果有人有興趣我會再寫一寫一些package的具體用法。。
主要核心的就是這麼些了。。想到了再補充
hadley和謝老大的系列packages(現在可以簡稱為RStudio系列了),加上data.table,shiny.
基礎操作中應該是各種apply吧~ sapply, lapply, mapply, tapply, 後面再寫個匿名函數也很方便~
之前一直當matlab用, 後來才發現函數也是R的一等公民。比如數據按月份求你自己定義的平均值(myAverage)。&> s &<- split(data, data$Month)&> lapply(s, function(x) myAverage(x[, c("Value1", "Value2", "Value3")]))GoogleVis https://code.google.com/p/google-motion-charts-with-r/
igraph,Rcpp,pipeR第一個圖演算法大全,不需自己寫,方便很多。第二個提高性能,cpp多麼強大無須多言。pipeR簡潔代碼,遠離括弧套括弧。
- tidyverse. 一個集合各種常用R包的綜合大禮包。導入之後,1包頂7個子包,就不用分別導入了。包含 ggplot(可視化), dplyr(數據預處理), tidyr(數據清洗), readr(數據導入) purrr(functional programming), tibble(一種比dataframe更簡潔友善的表格類型) tidyverse/tidyverse
- shiny. 提供一些基礎的交互可視化控制項。語法靈活,也支持html, JavaScript, markdown等等等。 前兩天小作業做了個特別簡單的dashboard,可以查詢美國1975-2015年各城市標準化後犯罪(殺人、強姦、盜竊、嚴重傷害)案件數。剛知道的時候就覺得很奇妙,原來R還能幹這個!
Shiny - Tutorial
ggplot2
我可以玩一整天ggplot,畫出來的圖可以美哭……dplyr
Introduction to dplyr尤其是好喜歡mutate,filter,arrange,select,rowwiseknitr
寫報告肥腸方便rmarkdown::render()RColorBrewer
efga€?s R Notes: RColorBrewer Package最近被這個package迷住了,太符合我的審美了…… Qualitative palettes比如Set1, Set2, Set3, Paired都好好看,顏色搭配地好舒服。我畫圖還有做Presentation都去那裡找顏色。tidyr::gather()跟reshape2::melt()功能差不多,用來設定key: value pair。特別喜歡-&大周末的上午強答一發,歡迎各位大神用更好用的包打我臉(這樣我就知道更好用的包了2333)Package 『muma』,不是「木馬」的意思,而是Metabolomics Univariate and Multivariate Analysis。描述是這樣的:Preprocessing of high-throughput data (normalization and scalings); Principal Component Analysis with help tool for choosing best-separating principal components and automatic testing for outliers; automatic univariate analysis for parametric and non-parametric data, with generation of speci?c reports (volcano and box plots); partial least square discriminant analysis (PLS-DA); orthogonal partial least square discriminant analysis (OPLS-DA); Statistical Total Correlation Spectroscopy (STOCSY); Ratio Analysis Nuclear Magnetic Resonance (NMR) Spectroscopy (RANSY). 高通量數據的標準化、主成分分析、單變數分析+逐個生成箱圖、正交偏最小二乘判別,這些組學常見套路還不夠,再加NMR總相關分析!做核磁代謝組學的同學看到它眼淚都要激動得流出來了好吧!而且用起來好簡單,趕上那些個商業化軟體的傻瓜程度了:定義生成文件的路徑
work.dir(dir.name="WorkDir")
explore.data(file="1224.csv", scaling="pareto", scal=TRUE, normalize=TRUE, imputation=FALSE, imput="ImputType")
Plot.pca(pcx=1, pcy=2, scaling="pareto", test.outlier=TRUE)
univariate(file="1224.csv", imputation=TRUE, imput="mean", normalize=TRUE, multi.test=TRUE, plot.volcano=FALSE)
plsda(scaling="pareto")
Plot.plsda(pcx=1, pcy=2, scaling="pareto")
oplsda(scaling="pareto")
(1) Gaude, E.; Chignola, F.; Spiliotopoulos, D.; Spitaleri, A.; Garcìa-manteiga, J. M.; Mari, S.; Musco, G. muma , An R Package for Metabolomics Univariate and Multivariate Statistical Analysis. Curr Metabolomics2013, 1 (2), 180–189.
Rcpp!
( ???????? )
分享命令載入R程序包的解決方法——當使用install.packages("程序包名")出現如下錯誤;以答主昨天載入intcox遇到的情況為例,分享問題及最終的解決過程。1)問題重述
出現 not available 提示無法載入intcox程序包;library以後出現如下情況。
原因是:
Package 『intcox』 was removed from the CRAN repository.
Formerly available versions can be obtained from the archive解決方法:我們需要去歸檔裡面尋找源碼程序包。
這時候就需要手動載入源碼packages(從R的CRAN中下載packages)
但是有的packages被歸檔了,這部分packages是以.tar.gz為後綴名的。2)解決方法
1.R語言網站下載packages:
R: The R Project for Statistical Computing
2.選擇CRAN
3.選擇下載packages
4.對於沒有歸檔的程序包,可以選擇Available Packages下的sorted by name(以包名排序),從這裡下載的packages是以.zip為後綴,是編碼處理以後的程序包。解壓放在R的library文件夾目錄下可直接在程序中library出來。
5.對於很大部分packages,我們無法在Available packages中找到,如本例,就需要到歸檔欄里找源碼,通過Rstools重新編譯,方才能在R中library調用packages。
歸檔的packages是以.tar.gz為後綴名。
3)Rtools安裝
Rtools下載地址:
http://mirror.bjtu.edu.cn/cran/bin/windows/Rtools/
這部分可參考下面這個鏈接,裡面有詳細介紹;
Windows下安裝R語言中的XX.tar.gz軟體包
4)在解決的工程中非常感謝我的朋友 Blue Sky,他幫我一同解決了這個問題。以下兩個鏈接是解決過程中用到的方法;
windows系統提示不是內部或外部命令也不是可運行的程序的解決辦法_windows_Windows系列我在重編嗎以後還是無法識別,把R重新安裝放在"D:"根目錄下再次手動載入.tar.gz編碼成功,參考如下;
主題:"D:Program" 不是內部或外部命令,也不是可運行的程序 或批處理文件。
5)編碼以後,成功載入源碼包
手動導入成功。
原諒歪樓了,但是手動導入.tar.gz源碼packages的過程以及方法真是讓人相見恨晚。
+++++++++++++++++++++++++++++
希望更幫助更多有需要的人,少走彎路快速用R進行分析,讓R更高效的服務於我們。
##### 第一次更新 2017.9.16 ######
附錄A )部分問題及解決辦法
感謝@GUOZHJ 在近期遇到的並提出的問題
在安裝tar.gz文件時,RTool安裝後,出現"C:Program" 不是內部或外部命令,也不是可運行的程序 或批處理文件。
解決方法:
把R安裝到C盤根目錄下。
補充一點個人經驗:
有些版本的R路徑的文件名不能含有中文字元,否則會報錯;有些版本需要安裝到默認路徑。最近一直在關注 一個叫FinanceR的專欄,作者更新速度很快,內容也是對的起業內良心呀。
鏈接在此,不要謝我!FinanceR - SegmentFaultdplyrtidyrggplot2knitrshinycaratrattleswirlRColorbrewerzooxtswoodcloud2stringrMASSxkcdleafletggthememosaicigraphHmiscggvisplotly
knitr包,拯救了我的課堂作業
可懟報告、可做ppt、可做網頁,具體的自己看咯~
老師讓我們做彩蛋,我就給大家展示了這個knitr包寫報告的方法,得了A+哇,美滋滋
對了!不適用於寫正規報告!
謝謝謝益輝大神~
0. 下載knitr包
1. 配置參數
2. 新建R Markdown
3. 選擇輸出格式,這裡我選擇HTML
4.我們一起懟報告吧!
我放百度雲辣!一起分享吧~
http://pan.baidu.com/s/1c2vikko
推薦閱讀:
※有哪些數據分析師的博客或網站值得推薦?
※現在是否有社會化媒體營銷的數據分析工具?
※誰能解釋一下,excel數據分析模塊下的回歸分析的參數
※諮詢公司(如MBB,奧緯等)的數據分析用什麼軟體比較多?
※請問如何畫出漂亮的數據遷移地圖?