王磊 閔佳鑫 鄂志國(guó)
(中國(guó)水稻研究所/水稻生物學(xué)國(guó)家重點(diǎn)實(shí)驗(yàn)室, 杭州310006;第一作者:wanglei05@caas.cn;*通訊作者:ezhiguo@caas.cn)
R 語(yǔ)言已經(jīng)是工業(yè)界和學(xué)術(shù)界的主流和標(biāo)準(zhǔn)計(jì)算語(yǔ)言之一,可能已是科學(xué)研究中數(shù)據(jù)分析最流行的計(jì)算語(yǔ)言[1-4],更有學(xué)者認(rèn)為R 語(yǔ)言是“免費(fèi)、易學(xué)、最熱門(mén)、最公開(kāi)透明、最全面、最新最快的統(tǒng)計(jì)軟件”[3]。但在中國(guó)知網(wǎng)(https://www.cnki.net/),選擇年份從 2000 年至2020 年,按照關(guān)鍵詞“R 語(yǔ)言”或者“R 軟件”對(duì)我國(guó)幾種主要農(nóng)學(xué)類(lèi)學(xué)術(shù)期刊進(jìn)行全文檢索,檢索到《中國(guó)農(nóng)業(yè)科學(xué)》100 篇,《作物學(xué)報(bào)》39 篇,而《中國(guó)水稻科學(xué)》只有6 篇,《雜交水稻》3 篇(其中1 篇是綜述)。檢索結(jié)果中,不排除只是在綜述或者討論中提到名稱(chēng),但也有可能個(gè)別論文所作的試驗(yàn)數(shù)據(jù)分析采用了R 語(yǔ)言但沒(méi)有注明而沒(méi)有檢索到。不過(guò),總的來(lái)說(shuō),檢索到的文章不少是組學(xué)研究和分子生物學(xué)研究領(lǐng)域的工作,農(nóng)業(yè)試驗(yàn)數(shù)據(jù)分析,特別是水稻科研和基礎(chǔ)的大田試驗(yàn)數(shù)據(jù)分析很少采用R 語(yǔ)言,其中的原因可能是:(1)農(nóng)業(yè)科研工作者的軟件使用習(xí)慣,譬如一直習(xí)慣采用SAS或者SPSS 等商用軟件;(2)對(duì)R 語(yǔ)言了解不多或者很少接觸;(3)也有可能是 R 語(yǔ)言的使用環(huán)境(R 軟件)不同于菜單式的軟件而需要編寫(xiě)代碼的特點(diǎn),妨礙了R語(yǔ)言的普及使用。
我們以?xún)善恼碌钠榻BR 語(yǔ)言的基本知識(shí)點(diǎn)以及在農(nóng)業(yè)試驗(yàn)數(shù)據(jù)上的基本應(yīng)用,希望有助于農(nóng)業(yè)科研工作者開(kāi)始嘗試使用R 語(yǔ)言分析試驗(yàn)數(shù)據(jù)。本文先介紹R 的下載安裝、起步使用以及R 的界面以及各項(xiàng)功能,接著介紹程序包的安裝和調(diào)用,然后是如何直接輸入試驗(yàn)數(shù)據(jù)或者從文本或者Excel 工作表讀入,最后通過(guò)簡(jiǎn)單的示例介紹利用R 語(yǔ)言作一些簡(jiǎn)單的統(tǒng)計(jì)分析。
R 語(yǔ)言官方網(wǎng)站(https://www.r-project.org/)的第一句話(huà)是這樣介紹R 語(yǔ)言的:“R is a free software environment for statistical computing and graphics”[5],即“R是一個(gè)用于統(tǒng)計(jì)計(jì)算和繪圖的自由軟件環(huán)境”。這句話(huà)表明了R 的三大特色:強(qiáng)大的統(tǒng)計(jì)計(jì)算功能、便捷的數(shù)據(jù)可視化系統(tǒng)以及免費(fèi)開(kāi)源。R 軟件是R 語(yǔ)言的實(shí)現(xiàn)環(huán)境,借助于程序包,提供了一套完整的數(shù)據(jù)處理、統(tǒng)計(jì)分析和作圖等功能,譬如:各種類(lèi)型的作圖、常用的統(tǒng)計(jì)檢驗(yàn)、方差分析、線(xiàn)性和非線(xiàn)性建模、各種多元統(tǒng)計(jì)分析以及時(shí)間序列分析等等,使用者只需根據(jù)數(shù)據(jù)分析目的,清楚分析所需的圖形類(lèi)型、統(tǒng)計(jì)計(jì)算或者統(tǒng)計(jì)模型,調(diào)用相應(yīng)的程序包以及其中的函數(shù),便可高效進(jìn)行數(shù)據(jù)的統(tǒng)計(jì)分析。
需要說(shuō)明,R 軟件是R 語(yǔ)言的實(shí)現(xiàn)環(huán)境,很多時(shí)候,我們不加以區(qū)分R 軟件或者R 語(yǔ)言,有時(shí)直接簡(jiǎn)稱(chēng)為R。
R 軟件的下載和安裝可以按照下列步驟執(zhí)行:
1)在 R 的官方網(wǎng)站(http://www.r-project.org),點(diǎn)擊藍(lán)色字體顯示的超鏈接“download R”,給出的是“CRAN 鏡像網(wǎng)站”(CRAN Mirrors)頁(yè)面,其中按照國(guó)別給出了各自國(guó)家的鏡像站。在給出的鏡像網(wǎng)站清單中選擇一個(gè)鏡像站,我們一般是選擇國(guó)內(nèi)(China)的鏡像站,譬如清華大學(xué)(TUNA Team, Tsinghua University)對(duì)應(yīng)的鏡像站域名:https://mirrors.tuna.tsinghua.edu.cn/CRAN/,點(diǎn)擊進(jìn)入該鏡像站后,有適合3 個(gè)不同操作系統(tǒng)的下載選擇:“download R for Linux”、“download R for(Mac) OS X”、“download R for Windows”,如果電腦是微軟Windows 操作系統(tǒng),點(diǎn)擊“download R for Windows”,在出現(xiàn)的下載頁(yè)面,點(diǎn)擊“Base”,在隨后的頁(yè)面上點(diǎn)擊“download R 4.0.5 for Windows”下載 R,其中的R 4.0.5 表明R 的版本號(hào)是4.0.5,這也是目前最新的版本號(hào)(2021 年 5 月 10 日)。
2)下載后,雙擊下載的安裝文件R-4.0.5-win.exe開(kāi)始安裝。在安裝過(guò)程中需要選擇安裝的語(yǔ)言,默認(rèn)為中文。 這里的中文選擇只是表明安裝過(guò)程是中文界面。
3)如果按照默認(rèn)設(shè)置,軟件將安裝在文件夾c:Program FilesRR-4.0.5,當(dāng)然也可以選擇不同的位置安裝。
4)安裝結(jié)束后,在桌面會(huì)生成一個(gè)R 啟動(dòng)命令的快捷鍵,真正的R 啟動(dòng)命令是位于目錄c:Program FilesRR-4.0.5bin 中的命令文件Rgui.exe。
只需雙擊桌面上的R 快捷鍵(或者點(diǎn)擊開(kāi)始菜單上的R 按鈕)便可打開(kāi)R 軟件窗口(圖1)。
R 軟件窗口(或者直接稱(chēng)為“R 窗口”)界面比較簡(jiǎn)潔,由三部分組成:菜單欄、快捷鍵按鈕以及稱(chēng)為R 控制臺(tái)(R Console)的交互式命令對(duì)話(huà)窗口。R 控制臺(tái)是R 窗口的主要界面,如果編寫(xiě)腳本或者作圖,還會(huì)用到編輯器窗口和圖形窗口。
R 窗口的菜單欄中具體欄目有文件、編輯、查看、其他、程序包、窗口、幫助;而菜單欄下方列出了8 個(gè)快捷鍵按鈕,對(duì)應(yīng)常用的一些命令功能,從第一個(gè)的“打開(kāi)程序腳本”按鈕到最后一個(gè)“打印”按鈕。如果我們將鼠標(biāo)的光標(biāo)對(duì)準(zhǔn)按鈕,光標(biāo)下方就會(huì)顯示按鈕的中文名稱(chēng)。
R 控制臺(tái)是一個(gè)交互式命令對(duì)話(huà)窗口,命令提示符是大于符號(hào)“>”,在該提示符右側(cè)閃動(dòng)的光標(biāo)位置表示在此處可以輸入指令,回車(chē)即得結(jié)果。比如,簡(jiǎn)單的加法2+3,在輸入命令后,按回車(chē)鍵執(zhí)行:
在命令2+3 下方給出了計(jì)算結(jié)果5,類(lèi)似地,各種命令可在R 命令行中輸入,回車(chē)既得結(jié)果。
結(jié)果5 左側(cè)有標(biāo)記[1],該標(biāo)記表示計(jì)算輸出結(jié)果的第一行(本意是這一行的第一個(gè)字符是輸出結(jié)果的第一個(gè)字符),不過(guò),如果輸出結(jié)果多于一行,那么第二行中括號(hào)的數(shù)字表示該行的第一個(gè)字符的序號(hào),如第一行有5 個(gè)數(shù)字,那么第二行中括號(hào)中的數(shù)字為6,即,表示第二行的第一個(gè)數(shù)字為輸出結(jié)果的第6 個(gè)數(shù)字;依次類(lèi)推。如利用英文冒號(hào):生成1 到30 的自然數(shù):
從生成的自然數(shù)序列很容易明白最左側(cè)的中括號(hào)中的數(shù)字所代表的含義。不過(guò),結(jié)果顯示的行的寬度與當(dāng)時(shí)控制臺(tái)窗口的寬度有關(guān)。
在R 命令行中交互式輸入命令時(shí),我們可以使用鍵盤(pán)中的上下方向鍵查看已輸入命令的歷史記錄。根據(jù)需要,我們就可以選擇一個(gè)之前輸入過(guò)的命令,按回車(chē)鍵可重新執(zhí)行該命令,當(dāng)然也可以修改之前的命令并執(zhí)行。
我們注意到啟動(dòng)R 軟件后,在R 控制臺(tái)窗口中“>”提示符上方的說(shuō)明給出了R 的版本號(hào)(R version 4.0.5),并指出了R 是自由軟件并提示可以用命令license()或者licence()獲取版權(quán)相關(guān)的信息,可以用contributors()查看R 語(yǔ)言開(kāi)發(fā)過(guò)程中的重要貢獻(xiàn)者,用citation()可以獲取R 軟件的參考文獻(xiàn)格式(包括latex 引用格式)。同時(shí)也提醒,特別是對(duì)于初學(xué)者,可以用命令demo()很粗略地了解R 的基本功能和能作出的一些基本圖形。我們可以嘗試輸入命令:
輸入該命令回車(chē)后給出了4 個(gè)基礎(chǔ)程序包(base、graphics、grDevices 和stats)的演示示范函數(shù)。譬如程序包graphics 有6 個(gè)演示函數(shù),如果想了解演示函數(shù)的演示內(nèi)容,例如函數(shù)graphics(與程序包同名),則可輸入命令,然后回車(chē):
按照演示的提示,逐步按回車(chē)鍵,可以了解R 的一些圖形功能以及作出的圖形。
另外,也提示了可以用命令help()獲取幫助信息,譬如希望查看t 檢驗(yàn)函數(shù)t.test()的幫助信息,可以采用命令:
而help.start()給出了HTML 瀏覽器來(lái)查看幫助文件:
在顯示的HTML 頁(yè)面上給出了非常豐富的R 幫助信息的匯總頁(yè)面。
如果我們希望退出R,可以單擊軟件窗口(RGui窗口)的右上角的叉號(hào)按鈕,或者直接輸入命令q()然后回車(chē):
隨后出現(xiàn)的對(duì)話(huà)框詢(xún)問(wèn)“是否保存工作空間映像?”,有 3 個(gè)選項(xiàng):“是”、“否”和“取消”。如果選擇“是”,2 個(gè)新文件:“.Rhistory”和“.Rdata”將會(huì)在工作目錄下創(chuàng)建,所有先前輸入的R 命令都會(huì)保存在“.Rhistory”,而所有的工作空間保存在“.RData”。注意這2 個(gè)文件都沒(méi)有前綴。下一次啟動(dòng)R 時(shí),通過(guò)這2 個(gè)文件,前一次保存的工作空間和輸入的命令將自動(dòng)恢復(fù)還原。
R 軟件是R 語(yǔ)言的實(shí)現(xiàn)環(huán)境,具體來(lái)說(shuō),R 軟件或許可以看作是由基于R 語(yǔ)言的許多常規(guī)和現(xiàn)代統(tǒng)計(jì)方法的運(yùn)行環(huán)境,許多統(tǒng)計(jì)方法作為R 的基礎(chǔ)運(yùn)行環(huán)境的一部分是由稱(chēng)為程序包(package)的函數(shù)來(lái)提供的。軟件R 下載安裝時(shí),已經(jīng)自動(dòng)安裝了基礎(chǔ)和常用的30個(gè)程序包,包括最基礎(chǔ)的程序包base、stats 和 graphics,以及數(shù)據(jù)集包datasets。但還有許許多多豐富多彩、日新月異的數(shù)據(jù)分析程序包,用戶(hù)可以很方便下載使用。目前程序包的數(shù)目已經(jīng)過(guò)萬(wàn)[1],這是R 的使用方便、功能強(qiáng)大的最主要的一個(gè)原因。
一個(gè)程序包是由相關(guān)的函數(shù)、數(shù)據(jù)及文檔組成。除了R 安裝時(shí)經(jīng)自動(dòng)安裝的30 個(gè)程序包,如果我們?cè)跀?shù)據(jù)分析時(shí)需要用到還沒(méi)有安裝的某個(gè)程序包中的函數(shù),則我們需要先下載安裝該程序包,然后加載該程序包,才能使用所需函數(shù)。當(dāng)然,程序包只需下載安裝1次即可,只是每次使用程序包中的函數(shù)之前,必須加載該程序包。在R 軟件菜單中的“程序包”欄目提供了“安裝程序包”和“加載程序包”選項(xiàng),由此可以進(jìn)行下載安裝以及加載程序包。但更為方便的方法是利用命令進(jìn)行下載安裝和加載。
1.3.1 安裝程序包
利用函數(shù)install.packages()下載安裝程序包,函數(shù)括號(hào)內(nèi)輸入需要安裝的包名,并在兩邊加引號(hào)(注意是在英文輸入狀態(tài)下的雙引號(hào))。以安裝農(nóng)業(yè)科研數(shù)據(jù)分析的一個(gè)程序包agricolae 為例,安裝該程序包:
需要注意,R 對(duì)于英文字母的大小寫(xiě)敏感,所以要時(shí)刻注意區(qū)分字母的大小寫(xiě)。另外,也需注意區(qū)分中英文的標(biāo)點(diǎn)符號(hào),在R 語(yǔ)言中都是使用英文輸入法狀態(tài)下的標(biāo)點(diǎn)符號(hào)。
1.3.2 加載程序包
一個(gè)程序包下載安裝后,如果我們需要使用程序包中的函數(shù),我們必須先加載該程序包,然后才能使用其中的函數(shù)。我們是利用函數(shù)library()來(lái)加載程序包的,函數(shù)括號(hào)內(nèi)寫(xiě)上需要加載的程序包名稱(chēng)(可以不加雙引號(hào))。以加載程序包為例:
加載后,就可以使用該程序包的函數(shù)。如果希望了解程序包中的函數(shù),同樣可以利用命令library()來(lái)查看:
另外,每次R 啟動(dòng)時(shí),自動(dòng)加載了6 個(gè)基礎(chǔ)程序包base、stats、graphics、grDevices、methods、utils 和 數(shù) 據(jù) 集包datasets,5 個(gè)基礎(chǔ)程序包中的函數(shù)可以直接調(diào)用,不需重復(fù)加載這些程序包,如我們這里用到的2 個(gè)函數(shù)install.packages()和library()分別是基礎(chǔ)包 utils 和 base的函數(shù),不必考慮加載函數(shù)所屬的程序包,可以拿來(lái)就用。
而基礎(chǔ)包中的數(shù)據(jù)集包datasets 中含有不同研究領(lǐng)域不同類(lèi)型的數(shù)據(jù)集104 個(gè)(版本4.2.0),不需加載,可以直接調(diào)用包中的數(shù)據(jù)集。包中的數(shù)據(jù)集中有不少是農(nóng)學(xué)和生物學(xué)學(xué)科的數(shù)據(jù)集,在學(xué)習(xí)R 語(yǔ)言的具體統(tǒng)計(jì)分析方法時(shí),可以通過(guò)數(shù)據(jù)集名稱(chēng)很方便地調(diào)用作為學(xué)習(xí)練習(xí)用的示例數(shù)據(jù)。如果希望查看包中的數(shù)據(jù)集,類(lèi)似于查看程序包中的函數(shù),利用命令library()查詢(xún):
在顯示的數(shù)據(jù)集清單中,第4 個(gè)數(shù)據(jù)集是草本植物吸收的二氧化碳(Carbon Dioxide Uptake in Grass Plants)數(shù)據(jù)集CO2,如果我們希望了解數(shù)據(jù)集的內(nèi)容,可以直接輸入數(shù)據(jù)集名即可:
如果只是想查看數(shù)據(jù)集前幾行,可以利用函數(shù)head()查看(n=3 表示只顯示前3 行。這一參數(shù)選項(xiàng)可以簡(jiǎn)寫(xiě)為3):
給出的數(shù)據(jù)集中的第一行是各列的變量名稱(chēng),隨后給出了數(shù)據(jù)集中的觀察值,最左側(cè)的整數(shù)1、2、3 表示觀察值對(duì)應(yīng)行的序號(hào)。R 中變量名稱(chēng)可以是中文,但不建議這么去做,而觀察值具體數(shù)值可以是中文。
如果進(jìn)一步希望了解該數(shù)據(jù)集的背景,包括每個(gè)變量的定義等等,可以通過(guò)幫助命令查看:
幫助信息中,給出了數(shù)據(jù)集的描述(Description)、格式(Format)、采集數(shù)據(jù)集的試驗(yàn)內(nèi)容(Details)、數(shù)據(jù)來(lái)源及相關(guān)文獻(xiàn)(Source)以及基于該數(shù)據(jù)集的統(tǒng)計(jì)分析例子(Examples)。
在開(kāi)始使用R 分析數(shù)據(jù)之前,最好先確定工作目錄。菜單中“文件”欄目中的“改變工作目錄”可以查看當(dāng)前的工作目錄,并作出更改。我們也可利用命令getwd()查看當(dāng)前工作目錄,如需更改,可以利用函數(shù)命令setwd()進(jìn)行更改。
這是當(dāng)前工作目錄,如要將工作目錄改為其他目錄,如D:MyR,那么通過(guò)命令setwd()作此改變:
注意在命令中的目錄路徑中是單斜杠,與Windows 中寫(xiě)法中的單斜杠方向正好相反。R 中另外一種目錄路徑的寫(xiě)法是雙斜杠,方向與Windows 中寫(xiě)法中的單斜杠一致:
R 語(yǔ)言的介紹和使用不僅在網(wǎng)上很容易查詢(xún),也有許多中文書(shū)籍可以購(gòu)買(mǎi)閱讀。或許可以從閱讀R 的官方網(wǎng)站中的中文幫助手冊(cè)開(kāi)始:例如,R 的綜合檔案網(wǎng)絡(luò)平臺(tái)CRAN(https://cran.r-project.org)有不少很好的幫助文檔,其中在非英文部分(Non-English Documents)的中文名目(Chinese)下有3 份非常實(shí)用的中文文檔(https://cran.r-project.org/other-docs.html):R reference card(R 參考卡片)、Frequently asked questions(R常見(jiàn)問(wèn)題解答)以及Statistics and R Reading Notes(統(tǒng)計(jì)學(xué)與R 讀書(shū)筆記)。
R 系統(tǒng)本身也提供便捷的幫助(R 窗口菜單中“幫助”欄目可以查詢(xún),只是幫助信息都是英文的)。想獲取在線(xiàn)幫助,可調(diào)用函數(shù)。例如,我們希望簡(jiǎn)單了解程序包,先加載該程序包:
或者只是用問(wèn)號(hào)“?”(注意是英文輸入法狀態(tài)下的問(wèn)號(hào)):
如果希望了解函數(shù)包中的函數(shù),可以利用函數(shù)library()查看:
如果希望了解某一個(gè)函數(shù)的使用方法,如計(jì)算均值的函數(shù)mean(),輸入命令:
或者簡(jiǎn)單地用問(wèn)號(hào):
函數(shù)mean()是基礎(chǔ)程序包base 的函數(shù),R 啟動(dòng)時(shí),基礎(chǔ)程序包base 自動(dòng)加載,所以可以直接尋求幫助。如果希望查看某個(gè)特定程序包的函數(shù),必須確認(rèn)該程序包已加載,不然需要先加載該程序包。如果我們希望查看agricolae 中的LSD 多重比較函數(shù)LSD.test(),需要先加載程序包再尋求幫助:
在R 控制臺(tái)交互窗口的命令行,輸入命令,回車(chē)得到結(jié)果,簡(jiǎn)單直接。而且,通過(guò)鍵盤(pán)中的上下箭頭鍵,可以調(diào)用已經(jīng)輸入過(guò)的命令和內(nèi)容,不用重復(fù)輸入。不過(guò)用了一段時(shí)間,慢慢熟悉了一些,可以學(xué)習(xí)創(chuàng)建程序腳本,執(zhí)行的命令可以重復(fù)使用,提高計(jì)算效率。我們可以從R 窗口菜單中的“文件”欄目中的“新建程序腳本”生成R 編輯器窗口,然后在該窗口編寫(xiě)代碼,利用R編輯器窗口中的“編輯”欄目中的選項(xiàng)運(yùn)行執(zhí)行編寫(xiě)好的代碼。
如果覺(jué)得R 平臺(tái)的綜合功能以及使用界面不是很友好,則可以了解一些方便用戶(hù)使用和編程的界面較為友好的圖形界面軟件(可參考“R 語(yǔ)言7 個(gè)免費(fèi)的GUI 圖 像 界 面 工 具 說(shuō) 明 ”:https://blog.csdn.net/lhy55040817/article/details/8484883),并從中做出選擇。目前使用最廣的是Rstudio,建議在安裝R 軟件后,同時(shí)也安裝 Rstudio。Rstudio 下載網(wǎng)站是:https://www.rstudio.com。
學(xué)習(xí)任何一個(gè)數(shù)據(jù)統(tǒng)計(jì)分析軟件,其中最關(guān)鍵的一個(gè)內(nèi)容是掌握這一軟件是如何輸入或者讀入數(shù)據(jù)的。R 的常用數(shù)據(jù)輸入和讀入大致可以分為以下幾類(lèi):(1)直接輸入;(2)基于文本文件的讀入;(3)基于 Excel數(shù)據(jù)表的讀入。每一類(lèi)都有多種的方法,這里介紹的方法較為常用而且相對(duì)簡(jiǎn)單。
如果試驗(yàn)數(shù)據(jù)較少,我們可以從控制臺(tái)窗口直接輸入數(shù)據(jù)。直接輸入數(shù)據(jù)需要利用拼接函數(shù)c(),不同數(shù)值之間用英文逗號(hào)分開(kāi),如果是字符,字符兩邊需要用英文引號(hào),同時(shí),輸入的數(shù)據(jù)(稱(chēng)為數(shù)據(jù)向量)一般會(huì)保存,便于隨后的分析。在《試驗(yàn)統(tǒng)計(jì)方法》中的表3.7給出了某水稻雜種第二代植株米粒性狀的分離情況,分離類(lèi)別和頻數(shù)分別是:紅米非糯,96;紅米糯稻,37;白米非糯,31,白米糯稻,15[6]。我們利用函數(shù)分別輸入分離類(lèi)別和頻數(shù),并保存為f2group 和f2freq:
如果想了解數(shù)據(jù)輸入的變量?jī)?nèi)容,可以利用函數(shù)print()查看(或者直接輸入變量名稱(chēng)。這里,兩個(gè)命令在同一行,命令之間需要用英文分號(hào)隔開(kāi)):
進(jìn)一步,利用函數(shù)sum()可以很方便地計(jì)算這4 種類(lèi)別頻數(shù)的總數(shù):
假設(shè)我們需要讀入以逗號(hào)分隔的csv 格式的文本數(shù)據(jù)文件datafile.csv(常常從Excel 數(shù)據(jù)文件將數(shù)據(jù)電子表保存為csv 格式文件),最常用的方法是用函數(shù)read.csv()讀入(保存為 mydata):
其中選項(xiàng)header=TRUE 表示datafile.csv 的數(shù)據(jù)表有表頭(類(lèi)似于數(shù)據(jù)集CO2,每一列都帶有變量名)。我們還可以用參數(shù)sep 來(lái)設(shè)置數(shù)據(jù)之間的分隔符號(hào),默認(rèn)為逗號(hào),如果是空格符號(hào),sep="";如果是制表符Tab鍵,sep=" "。假設(shè)是制表符作為分隔符號(hào),那么利用函數(shù)讀入datafile.csv 的設(shè)置為:
如果數(shù)據(jù)文件datafile.csv 不在工作目錄中,那么我們需要給出該文件所在的目錄路徑,如文件在文件夾D:MyR,那么相應(yīng)的讀入命令修改為:
讀入文本數(shù)據(jù)另外一個(gè)常用的函數(shù)是read.table(),用法也與read.csv()類(lèi)似。
Excel 文件中的數(shù)據(jù)表可以利用openxlsx、readxl等程序包中的函數(shù)讀入。我們以程序包openxlsx 中的函數(shù) read.xlsx()為例簡(jiǎn)單介紹讀取xlsx 格式的Excel 電子表數(shù)據(jù)。
首先先下載安裝并且加載程序包openxlsx(其中#為注釋符號(hào),表明#右邊的注釋內(nèi)容在運(yùn)行代碼時(shí)跳過(guò)忽略):
假如數(shù)據(jù)存儲(chǔ)在Excel 文件MyExcelDataFile.xlsx中的第2 個(gè)工作表,那么可以利用包中的函數(shù)讀入該數(shù)據(jù)電子表:
當(dāng)然,我們也可通過(guò)工作表的名稱(chēng)來(lái)讀入,比如工作表名稱(chēng)是sheet2,那么可以通過(guò)下面的代碼讀入該工作表:
注意,read.xlsx()的讀入方式默認(rèn)讀入工作表表頭,同時(shí)Excel 文件名以及其中的工作表可以是中文名稱(chēng)。
如果需要讀入較老版本的Excel 文件(xls 格式),程序包readxl 提供了函數(shù) read_xls(),該函數(shù)的用法與read.xlsx()類(lèi)似。
夸R 好,說(shuō)R 行,但百聞不如一見(jiàn),百見(jiàn)不如一試。我們?cè)谶@一節(jié)簡(jiǎn)單用一下R,看R 是如何方便高效地進(jìn)行數(shù)據(jù)匯總、作圖,以及線(xiàn)性相關(guān)和線(xiàn)性回歸計(jì)算。
我們利用莫惠棟著作《農(nóng)業(yè)試驗(yàn)統(tǒng)計(jì)》中的一個(gè)用于介紹線(xiàn)性回歸分析的例子(例10.1)的數(shù)據(jù)集[7]來(lái)介紹R 的數(shù)據(jù)匯總和基本的作圖功能,在下一小節(jié)介紹用R 函數(shù)進(jìn)行線(xiàn)性相關(guān)和線(xiàn)性回歸分析。
例1. 許多害蟲(chóng)的發(fā)生都和氣象條件有一定關(guān)系。山東臨沂測(cè)定10 年間(1964—1973 年)7 月下旬的溫雨系數(shù)(雨量mm/平均溫度C)和大豆第二代造橋蟲(chóng)發(fā)生量(每百株大豆上蟲(chóng)數(shù))的關(guān)系如表1,試建立回歸方程。
我們利用函數(shù)c()分別輸入表1 中的溫雨系數(shù)的數(shù)據(jù)以及對(duì)應(yīng)的百株蟲(chóng)密度,并保存為T(mén)Rcoef 和Dworm:

表1 溫雨系數(shù)和大豆第二代造橋蟲(chóng)蟲(chóng)口密度
查看一下數(shù)據(jù)向量TRcoef 和Dworm 具體的數(shù)值:
對(duì)于數(shù)據(jù)向量TRcoef 和Dworm,可以利用R 函數(shù)很方便進(jìn)行相關(guān)的匯總計(jì)算,如利用函數(shù)mean() 和sd() 計(jì)算平均值和標(biāo)準(zhǔn)差,或者利用函數(shù)summary () 對(duì)Dworm 進(jìn)行簡(jiǎn)單的數(shù)據(jù)匯總(計(jì)算結(jié)果依次給出):
如果需要對(duì)數(shù)據(jù)向量的每個(gè)元素作同樣的計(jì)算,如對(duì)向量Dworm 的每個(gè)元素作log 變換,不需要對(duì)每個(gè)元素分別做log 變換,只需要將函數(shù)log () 作用于Dworm 即可:
我們也可以很方便地作出常見(jiàn)的統(tǒng)計(jì)圖形,如利用函數(shù)hist()和boxplot()作出數(shù)據(jù)向量Dworm 的直方圖(圖2)和箱線(xiàn)圖(圖 3):
如果需要作出百株蟲(chóng)密度Dworm 與溫雨系數(shù)TR-coef 的散點(diǎn)圖,我們可以采用函數(shù)plot ()(在參數(shù)設(shè)置中,用于x 軸變量的TRcoef 在前,用于y 軸變量的Dworm 在后):
從作出的圖形(圖4)可以幫助我們很清晰地看到百株蟲(chóng)密度Dworm 與溫雨系數(shù)TRcoef 呈一定程度的負(fù)的線(xiàn)性相關(guān)。
進(jìn)一步,如果我們希望完善圖形,利用函數(shù)plot()參數(shù)設(shè)置很容易做到。比如,希望x 坐標(biāo)軸和y 坐標(biāo)軸的坐標(biāo)說(shuō)明不是變量名而是中文說(shuō)明,那么可以利用函數(shù)的參數(shù)選項(xiàng)xlab 和ylab 進(jìn)行設(shè)置。在下一小節(jié)圖5 中可以看到添加坐標(biāo)軸說(shuō)明的效果):
plot () 的其他更多的參數(shù)選項(xiàng)和相關(guān)內(nèi)容可以利用命令help(plot) 查看了解。
進(jìn)一步,如果我們希望計(jì)算百株蟲(chóng)密度Dworm 與溫雨系數(shù)TRcoef 之間的相關(guān)系數(shù),并進(jìn)行相關(guān)性檢驗(yàn),我們利用函數(shù)cor.test()進(jìn)行計(jì)算和檢驗(yàn):
從計(jì)算結(jié)果的最后一行可知,百株蟲(chóng)密度Dworm與溫雨系數(shù)TRcoef 的相關(guān)系數(shù)r = -0.9201,統(tǒng)計(jì)檢驗(yàn)的 P 值(p-value)= 0.0001618,檢驗(yàn)結(jié)果極顯著,即數(shù)據(jù)有極強(qiáng)的證據(jù)表明兩個(gè)變量之間的總體相關(guān)系數(shù)不等于 0。
從作出的2 個(gè)變量的散點(diǎn)圖(圖5)中,已經(jīng)清楚百株蟲(chóng)密度與溫雨系數(shù)呈一定程度的負(fù)的線(xiàn)性相關(guān),進(jìn)一步,我們希望建立基于溫雨系數(shù)的百株蟲(chóng)密度的線(xiàn)性回歸模型,利用函數(shù) lm()和summary()可以得到擬合系數(shù)、統(tǒng)計(jì)檢驗(yàn)以及決定系數(shù)R2:
從計(jì)算結(jié)果的回歸系數(shù)(Coefficients)可知,簡(jiǎn)單線(xiàn)性回歸的截距和斜率的擬合系數(shù)在Estimates 一欄給出,分別是179.212 和-14.110,其顯著性檢驗(yàn)的P 值在最后一欄(Pr(>|t|)給出,分別是 9.02e-07 和 0.000162,統(tǒng)計(jì)上都是極顯著,而決定系數(shù)R2是在計(jì)算結(jié)果的最后一部分的第二行給出,Multiple R-squared:0.8466,即R2= 0.8466,也就是說(shuō),84.66%的大豆第二代造橋蟲(chóng)發(fā)生量的變異可以由7 月下旬的溫雨系數(shù)解釋。
最后,如果還希望在散點(diǎn)圖(圖4)上添加擬合的回歸直線(xiàn),這可以由函數(shù)abline()很方便地做到,其中myfit 是前面線(xiàn)性回歸中保存的 lm (Dworm~TRcoef) 的計(jì)算結(jié)果。
相對(duì)于許多商用的統(tǒng)計(jì)分析軟件,R 免費(fèi)開(kāi)源,優(yōu)勢(shì)明顯。“便宜或者免費(fèi)無(wú)好貨”的說(shuō)法,對(duì)于R 是不成立的。在R 開(kāi)始應(yīng)用的近 20 年,眾人拾柴火焰高,開(kāi)發(fā)的程序包無(wú)數(shù),對(duì)于科研項(xiàng)目的數(shù)據(jù),不管是來(lái)自田間試驗(yàn)還是實(shí)驗(yàn)室的實(shí)驗(yàn),R 語(yǔ)言都有相應(yīng)的程序包可以使用,滿(mǎn)足分析的要求,而且很多時(shí)候同時(shí)有多個(gè)程序包和多種函數(shù)可以選擇。
R 的一個(gè)明顯缺陷是計(jì)算結(jié)果和幫助信息是用英文表述的,不過(guò),一種較為方便的規(guī)避途徑是通過(guò)百度、搜狗、必應(yīng)等搜索引擎查詢(xún)相關(guān)的內(nèi)容,尤其是相關(guān)的例子,可以快速上手并幫助正確解讀R 計(jì)算結(jié)果;另外一種較為系統(tǒng)的了解學(xué)習(xí)是通過(guò)相關(guān)的中文資料和書(shū)籍來(lái)熟悉常用函數(shù)的用法和結(jié)果的解讀,除了文中提到的R 的綜合檔案網(wǎng)絡(luò)平臺(tái)CRAN 給出的3 份中文文檔,參考文獻(xiàn)中也列出了我們常常用來(lái)學(xué)習(xí)查閱的書(shū)籍,可供參考[3-4,8-10]。當(dāng)然,在網(wǎng)上書(shū)店還有許許多多的相關(guān)書(shū)籍,可以選擇適合自己的書(shū)來(lái)入門(mén)學(xué)習(xí)。
R 的使用如果能掌握一些簡(jiǎn)單的編程能力當(dāng)然更好,不過(guò)大多數(shù)時(shí)候并不需要,只需要能正確調(diào)用及使用試驗(yàn)數(shù)據(jù)分析所需的程序包中的函數(shù)就可以。通過(guò)本文的簡(jiǎn)單介紹,希望能打消初學(xué)者對(duì)R 的畏難情緒,激發(fā)使用R 的興趣,盡快入門(mén),掌握R 使用的一些基本方法。像學(xué)習(xí)任何一個(gè)軟件,活學(xué)活用、邊用邊學(xué)是最好的、也可能是最有效的方法,所以打開(kāi)電腦,下載安裝R,開(kāi)始使用,用R 分析自己的試驗(yàn)數(shù)據(jù)吧。