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簡潔代碼,遠離括弧套括弧。


  1. tidyverse. 一個集合各種常用R包的綜合大禮包。導入之後,1包頂7個子包,就不用分別導入了。包含 ggplot(可視化), dplyr(數據預處理), tidyr(數據清洗), readr(數據導入) purrr(functional programming), tibble(一種比dataframe更簡潔友善的表格類型) tidyverse/tidyverse
  2. shiny. 提供一些基礎的交互可視化控制項。語法靈活,也支持html, JavaScript, markdown等等等。 前兩天小作業做了個特別簡單的dashboard,可以查詢美國1975-2015年各城市標準化後犯罪(殺人、強姦、盜竊、嚴重傷害)案件數。剛知道的時候就覺得很奇妙,原來R還能幹這個!

Shiny - Tutorial


ggplot2

我可以玩一整天ggplot,畫出來的圖可以美哭……

dplyr

Introduction to dplyr

尤其是好喜歡mutate,filter,arrange,select,rowwise

knitr

寫報告肥腸方便

rmarkdown::render()

RColorBrewer

efga€?s R Notes: RColorBrewer Package

最近被這個package迷住了,太符合我的審美了…… Qualitative palettes比如Set1, Set2, Set3, Paired都好好看,顏色搭配地好舒服。我畫圖還有做Presentation都去那裡找顏色。

tidyr::gather()

跟reshape2::melt()功能差不多,用來設定key: value pair。特別喜歡-&,用來exclude column(s)save.image()和load()

雖然比較占硬碟空間,但是好省事,做多項任務的時候完全不會弄混淆設定的函數,變數等……


大周末的上午強答一發,歡迎各位大神用更好用的包打我臉(這樣我就知道更好用的包了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")

PCA分析

explore.data(file="1224.csv", scaling="pareto", scal=TRUE, normalize=TRUE, imputation=FALSE, imput="ImputType")

PCA出圖

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)

PLS-DA分析

plsda(scaling="pareto")

PLS-DA出圖

Plot.plsda(pcx=1, pcy=2, scaling="pareto")

OPLS-DA分析+出圖(S-Plot圖也有!)

oplsda(scaling="pareto")

裡面個別參數(比如標準化的演算法,這個有好幾種)是可以選的。

而且所有分析的結果和圖都以pdf形式存在工作路徑里了!

這對買不起SIMCA-P、SAS、SPSS等軟體的窮苦土鱉來說簡直是福音!

被安利到的同學請參考這篇文獻,作者非常良心地在補充材料里附上了詳細的教程!

(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 - SegmentFault


dplyr

tidyr

ggplot2

knitr

shiny

carat

rattle

swirl

RColorbrewer

zoo

xts

woodcloud2

stringr

MASS

xkcd

leaflet

ggtheme

mosaic

igraph

Hmisc

ggvis

plotly


knitr包,拯救了我的課堂作業

可懟報告、可做ppt、可做網頁,具體的自己看咯~

老師讓我們做彩蛋,我就給大家展示了這個knitr包寫報告的方法,得了A+哇,美滋滋

對了!不適用於寫正規報告!

謝謝謝益輝大神~

0. 下載knitr包

1. 配置參數

2. 新建R Markdown

3. 選擇輸出格式,這裡我選擇HTML

4.我們一起懟報告吧!

我放百度雲辣!一起分享吧~

http://pan.baidu.com/s/1c2vikko


推薦閱讀:

有哪些數據分析師的博客或網站值得推薦?
現在是否有社會化媒體營銷的數據分析工具?
誰能解釋一下,excel數據分析模塊下的回歸分析的參數
諮詢公司(如MBB,奧緯等)的數據分析用什麼軟體比較多?
請問如何畫出漂亮的數據遷移地圖?

TAG:數據挖掘 | 數據分析 | 機器學習 | 數據分析工具 | R編程語言 |