R是非常容易入門的一個統(tǒng)計軟件或語言,它是輔助工具,不是主體,應(yīng)該配合統(tǒng)計相關(guān)內(nèi)容一起學(xué)習(xí)。
我第一次聽說這個軟件還是在浙林的時候,鄔榮嶺老師的講座或是培訓(xùn)會議上。真正開始接觸是2014年,因為要利用asreml去計算遺傳參數(shù)。最高效的學(xué)習(xí)往往發(fā)生在你急需這些知識或技巧的時候,所以最好是手上有需要使用R的任務(wù),當(dāng)然在這之前可以熟悉一下簡單的操作比如+-*/、數(shù)據(jù)的導(dǎo)入。
我主要用到的參考資料有
-
R語言實戰(zhàn)(第2版)
Kabacoff - 2015 - R IN ACTION Data analysis and graphics with R.jpg -
R數(shù)據(jù)可視化手冊——這是本工具書,查閱畫圖參數(shù)
R Graphics Cookbook.jpg -
華南農(nóng)大林元震老師主編的r與asreml-r統(tǒng)計分析教程——主要是后邊asreml-r部分,我覺得林老師參考了一些新西蘭Canterbury大學(xué)Luis Apiolaza老師的ASReml Cookbook。Luis的個人網(wǎng)頁也有一些有用的內(nèi)容和Twitter。
r與asreml-r統(tǒng)計分析教程(第1版)
林老師的這本書出到了第2版,比上一版厚了一倍,如果把程序輸出結(jié)果拿掉能去掉一半的內(nèi)容。這本書更像一本講義或者是筆記,沒有很多理論性的內(nèi)容,通常只有一個簡略的概念,一個樣例和代碼及太多的輸出結(jié)果。所以這是本工具書,需要相關(guān)的代碼直接翻書查找(高級代碼還得去stackoverflow)。沒有統(tǒng)計知識也是它的優(yōu)點,你看不到容易恐懼的公式和推導(dǎo),除了LMM那一丁點兒。另外一個優(yōu)點是第7章——試驗設(shè)計。《實戰(zhàn)》沒有這部分內(nèi)容,也未見到有相關(guān)的R書籍。如果林老師下次能把試驗設(shè)計交代得更細(xì)致一點,比如給個圖就更好了。另一個特點還是遺傳評估這一章,對于遺傳育種專業(yè)并且需要進行參數(shù)估算的geneticist和breeder可以重點敲這一部分的代碼。林老師還有一個非常重要的貢獻在于他自己寫了一部分批處理的函數(shù)AAfun,在處理數(shù)據(jù)時,尤其有較多的變量時會比較方便。除了這2章外,其余的內(nèi)容在其他的R工具書中一般也都有涉及,所以拿這本書學(xué)習(xí)R也是合適的(但我首推的還是《實戰(zhàn)》,無出其右者)。同樣,這本書也事無巨細(xì)。達成一個目的途徑很多,掌握自己最舒服的一個就可以了,其余的不感興趣大可不必學(xué)習(xí)。
所以,自認(rèn)為一個入門者,以林老師的這本第2版,按照濃縮一下數(shù)據(jù)管理(導(dǎo)入、處理和導(dǎo)出)這一部分,給還未接觸而又有必要學(xué)習(xí)的同仁鋪點路,也給自己一個梳理復(fù)習(xí)的機會。
21 July 2017 更新
第1章 R簡介
- 簡介不是重點,不用看。
- Rstudio不是強烈建議要安裝,而是必須安裝?。。?/strong>
第2章 基礎(chǔ)語法
- 2.1 對象與變量
- 賦值符號
<-在Rstudio中的快捷鍵是'Alt'+'-'。 - 2.1.1 變量創(chuàng)建 比如有樹高和胸徑要算材積指數(shù),(當(dāng)然在Excel中算好后導(dǎo)入也可以),學(xué)會方法一就夠用了。給的例子是直接搬《實戰(zhàn)》的,連數(shù)據(jù)都沒改但書的架構(gòu)為什么不借鑒一下?
- 2.1.2 變量命名用方法二
names(),矩陣沒有變量,行名和列名分別是rownames()和colnames()。 - 2.2 運算符為何不放在最前面?
- 2.3 表達式一看就會不是嗎?有幾個情況會用到表達式:
- 寫模型時
- 畫圖涉及到公式時(需要在圖上放擬合模型)
- 構(gòu)建關(guān)聯(lián)矩陣時(
model.matrix)
- 2.4 NA是缺失值, NULL是空值。NULL在寫函數(shù)時會很常用,比如要先建個空的向量或矩陣,然后循環(huán)把數(shù)值放進去。
- 2.5 控制結(jié)構(gòu)
- 2.5.1
if/else寫函數(shù)時比較常用,switch用的不多。 - 2.2.2
for循環(huán)是批量處理的關(guān)鍵函數(shù),有人詬病因為它比較慢,但它的呈現(xiàn)非常直接,易讀。當(dāng)對象是list的時候用lapply則比for要好用很多。while也常用,比如迭代時。 - 2.6 自編函數(shù)是不是放在數(shù)據(jù)管理后面會更好?因為學(xué)習(xí)順序是那樣的,數(shù)據(jù)還不會導(dǎo)進去怎么會寫函數(shù)?
第3章 數(shù)據(jù)創(chuàng)建
- 3.1 數(shù)據(jù)類型以向量、矩陣、數(shù)據(jù)框和列表最常用,數(shù)組用的少(我沒用過)。向量、矩陣和數(shù)據(jù)框不都是矩陣嗎?搞得好復(fù)雜,對了還有一個叫scalar的東西,不就是維度不一樣嗎?列表在最開始學(xué)的時候比較讓我迷糊,沒有直觀概念??梢赃@么說,列表是最general的類型,能裝前面所有的類型,所以學(xué)的多了以后會偏愛列表,尤其是一個函數(shù)要返回多個內(nèi)容,彼此類型又不一致時。
- 3.1.6 因子 學(xué)過試驗設(shè)計、做過ANOVA分析就知道什么是因子,就是變量是類別,沒有順序也不分大小。
- 3.1.7 字符串 就是一種比較general的向量,文本分析或分析序列時會涉及到非常多的字符串操作比如拆分和合并(我在從文獻中根據(jù)單詞提取句子時,數(shù)據(jù)類型全是字符串)。
- 3.1.8 日期 我處理的數(shù)據(jù)沒有這個類型,所以跳過去吧。
- 3.2 對象的模式和屬性 變量應(yīng)該是因子而不確定是否做過轉(zhuǎn)換時會查看一下,不寫高級函數(shù)一般不用。需要的話在
Rstudio中可以直接查看。 - 3.3 數(shù)據(jù)輸入 學(xué)會一個
read.csv就可以了,整那么復(fù)雜干啥?read.csv和read.table的區(qū)別是前者默認(rèn)表頭(header=T),并且不用sep=',',非常簡便。所以請在導(dǎo)入R前把相應(yīng)的Excel轉(zhuǎn)換成csv格式。 - 3.4 數(shù)據(jù)存儲 這個分幾種情況:
- 處理了一些
csv要導(dǎo)出來,用write.csv。 - 不是表格的話可能要導(dǎo)成
txt,用write.table,這個和導(dǎo)入數(shù)據(jù)用的函數(shù)是對應(yīng)的。默認(rèn)輸出會加一列從1到n編碼,不需要的話聲明中加row.name=F。字符向量輸出會加雙引號,不需要的話加quote=F。 - 同時保存多個文件,下次想直接導(dǎo)入用時可以導(dǎo)出成R自己的格式
.Rdata,這個格式的文件也比較小,用save()而非write。
- 處理了一些
第4章 數(shù)據(jù)管理(數(shù)據(jù)操作比較恰當(dāng))
這部分是整個數(shù)據(jù)分析流程中最繁瑣與耗時的,要耐心要認(rèn)真。
- 4.1 數(shù)據(jù)(類型)轉(zhuǎn)換和4.2 排序(略)
- 可能會遇到這樣一種情況,當(dāng)列表中的每個元素
- 4.3 數(shù)據(jù)合并 很多時候需要合并數(shù)據(jù),我把我遇到的情況列在下邊
-
合并2個表格,比如你對同一塊林子在2個時間分別做了調(diào)查,一般會有出入比如有的死了數(shù)據(jù)沒錄入,而數(shù)據(jù)分析時你得放到一起。放在Excel中肉眼匹配也可以,但
merge()能節(jié)省許多的時間,允許取2者的交集或并集。舉個例子:2個數(shù)據(jù)集df05和df10,df_merge <- merge(x = df05, y = df10, by.x = "Treeid05", by.y = "Treeid10"),取2者并集加all = T,取x和2者的交集加all.x = all,取2這的共同交集加all.x = all, all.y = all。 -
合并1個字符串,1個字符串向量有多個元素,需要合并這些元素成1個用
paste(),加collapse = '',單引號中加需要的分隔符。 - 一個指標(biāo)輸在多列,比如
-
合并2個表格,比如你對同一塊林子在2個時間分別做了調(diào)查,一般會有出入比如有的死了數(shù)據(jù)沒錄入,而數(shù)據(jù)分析時你得放到一起。放在Excel中肉眼匹配也可以,但


