# ----------------------------------------------------------------- ## Getting Started with R and Emacs ## Frank Liu 劉正山 ## Institute of Political Science, National Sun Yet-San University ## Date: 2010.10.5 ## ---------------------------------------------------------------- ##======================= ## 安裝 Emacs+ESS+R ##====================== ## 方式一:一般安裝法 ## 第一步:安裝R。請到R首頁下載並安裝R(http://www.r-project.org/),注意不要更動安裝路徑 ## 第二步:安裝Emacs。請到Vincent Goulet教授的網站下載他升級過後的Emacs(http://vgoulet.act.ulaval.ca/en/ressources/emacs/windows),裡頭已經裝載並設定好ESS。注意,不要更動安裝路徑。 ## 啟動Emacs, 這時你應該可以順利地以x-R啟動R。 ## 方式二:使用NSYSU圖資處提供的Emacs+ESS+R安裝程式 ## http://www.lib.nsysu.edu.tw/moodleservice/course/view.php?id=3 ## 安裝完成後,請確定你可以在Emacs中啟動R(參見3.1) # 暖身遊戲:用R來玩玩Sudoku # 如果你還不知道如何在emacs中啟動R,就直接在R視窗中輸入以下指令試試看 install.packages("sudoku") library(help=sudoku) library(sudoku) generateSudoku() example(generateSudoku) # A Nicer Looking Sudoku Puzzle myPuzzle <- generateSudoku(Nblank = 20, print.it = F) printSudoku(myPuzzle) # Play Sudoku interactively against R # There is even an interactive on-screen game to be played (with hints for cheaters) playSudoku(fetchSudokuUK(), solve=T) printSudoku(fetchSudokuUK()) ##======================== ## 1. 使用Emacs來編輯R檔 ##======================== ## Emacs是寫程式的好幫手,它的好要長期用它的人才知道 ## 你雖然可以使用滑鼠來操作Emacs和R,但那一天你能用鍵盤來操作它的時候, ## 你才能真正享受用Emacs來工作的效率 ## 以下的解說中,C- 表示按住Ctrl鍵不放,M-表示按住Alt鍵不放,RET表示按下Return/Enter鍵 ## 例如,指令打錯了要臨時中止重要,用C-g,表示左手小指按住Ctrl鍵不放,左手食指按下g鍵。 ## 又例如,要結束Emacs,使用"C-x c"表示左手小指按住Ctrl鍵不放,左手食指先按下x鍵之後再按c鍵。 ## 1.1 指令加註 ## 在Emacs中你可以製作任何的文字檔,存成txt,不需要加註 ## 但是,R只看得懂R的指令,所以你必須在R檔中把不要交給R讀取的「非指令」文字加註。 ## 在敘述或指命前加上一個或一個以上的井字號便可以把該行轉成註解(comment out); ## 養成習慣:在句字前的註用兩個或兩個以一的井號;在指令行後的加註用一個井號 ## 若要在行末加註,使用 M-; ## 你可以打完字之後再將一整段加註起來:用滑鼠選取段落後,用M-; ## 要解理長句字,使段落排列維持一定寬度,使用 M-q ## 1.2 在Emacs中使用你熟悉的copy-and-paste ## 到選單中 options -> CUA ## 別忘了再同一選單,再點一下Save Options,讓Emacs下次啟動時記住這個設定 ## 剪下:C-x (或是C-w) ## 貼上:C-v (或是C-y) ## 回復:C-z ## 1.3 在Emacs中尋找檔案、開啟檔案和存檔 ## 注意:使用指令列來處理檔案必須使用絕對路徑 ## 尋找檔案、開啟檔案(含開啟新檔)都用: C-x f ## 這一來你可以在Emacs中同時開啟多個檔案 ## 存檔:C-x s ## 另存新檔:C-x w ## 1.4 工作檔(buffers) ## Emacs可以讓你同時開啟多個檔案,使用Ctrl + 滑鼠左鍵 來切換工作檔 ## 結束某個工作檔(kill buffer):C-x k ## 1.5 分割視窗 ## 上下分割視窗: C-x 2 ## 左右分割視窗: C-x 3 ## 關閉所有分割視窗,只留游標所在的視窗: C-x 1 ## 關閉游標目前所在的視窗:C-x 0 (注意,是數字的0) ## 在開啟的視窗之間切換游標:C-x o (注意,是英文字母的o) ## 請建立自己喜歡的工作平台,例如將Emacs切出上半視窗作為R檔的編輯區,將下半作為R的工作區 ## 1.6 在Emacs中尋找、取代特定的字詞 ## 尋找:C-s ## 取代:M-x query RET ##======================= ## 2. 在Emacs 中使用R ##====================== ## 2.1 R的啟動與關閉 ## 在Emacs中啟動R:M-x R RET ## 在Emacs中傳送單行指命給R:C-c n ## 傳送數行(用滑鼠選擇的區域)給R:C-c r ## 傳送目前整個R檔給R:C-c b ## 要結束R請勿直接關閉Emacs ## 將游標移至R的視窗輸入 q() ## 2.2 安裝、更新與使用套件 install.packages(c("car","Rcmdr")) update.packages(ask=FALSE) library(Rcmdr) ## 注意事項: ## 1、在Emacs-ESS環境下開啟R來安裝新的R套件時系統會因不明原因卡住 ## 請另外啟動R來視窗來安裝套件; ## 2、如果要讓Emacs在常用的工作路徑上啟動,請在emacs啟動圖示上按滑鼠右鍵, ## 在"start in"欄位中輸入新的工作路徑(往往是主要存放檔案的路徑)。 ## 2.3 物件查詢與編輯 ls() # 查詢目前存放的物件名稱 objects() rm(wgc) # 清除物件wgc rm(list=ls()) # 清除所有在暫存區的物件 version # 查詢自己電腦的系統資訊 ## 2.4 讀取與儲存外部(磁碟或網路上的)資料檔案 library(foreign) # foreign這個程式庫專門用來處理不同格式的檔案,記得先把資料檔存妥後再讀取 ## 2.4.1 讀取csv檔案: wgc <- read.csv("http://www2.nsysu.edu.tw/politics/liu/teaching/dataAnalysis/wgcoll.csv") #或是 wgc <- read.csv("d://檔案存放路徑/wgcoll.csv") # 你也可以試試 gdata 套件來直接存取excel檔 # 例如: # library(gdata) # myfn <- "practiceData.xls" # dat <- read.xls(myfn, sheet=1, header=T) ## 2.4.1 讀取SPSS的sav檔案: teds08l <- read.spss("D:/teaching/statistics/data/TEDS08L_indQ.SAV", use.value.labels=FALSE,to.data.frame=TRUE, max.value.labels=10) ## 若作業系統為Windows XP,建議先在SPSS中把sav檔案轉存為por格式,再行以read.spss讀入。 ## 2.4.3 讀取R的rda檔案: ## load("d:/檔案存放路徑/檔案名稱.rda") ## 假設存放rda檔案的位置是在d:/home/ashan/data/TEDS2008L_Indepnedence/這個資料夾內: load("D:/teaching/statistics/data/TEDS08L_indQ.rda") #注意引號的使用 ## 2.4.4 存成新資料檔 wgcNew <- as.data.frame(wgc) # 將csv檔案格式轉換為資料框架(data frame) fix(wgcNew) # 在資料框架中直接修改資料 write.csv(wgcNew,file="f:/檔案存放路徑/新檔名.csv", sep = ",", row.names = FALSE, col.names = TRUE) #存成csv檔 save(teds08l,file="D:/teaching/statistics/data/TEDS08L_indQ.rda", compress=TRUE) #存成R專用的rda檔 ## 2.5 鎖定資料檔 # 方式1: attach() attach(wgc) table(g,c) ## 方式2: with() with(wgc, table(g,c)) ## 2.6 透過R內建的說明書自學指令使用方法 ?sum help.search("standard deviation") # 最常用的方式 RSiteSearch("standardized coefficients") # 搜尋網路資料庫 # 2.7 選項控制 options(digits=4) options(editor="emacs") ##===================== ## 3. 使用R初步檢視資料 ##===================== ## 3.1 檢視變數的資料(summarize a variable) summary(wgc$aa) ## 3.1.1 Types of data in R (Verzani 2005, Section 4.5, p.135) class(wgc) class(wgc$aa) class(wgc$g) # should gender be numeric? wgc$g <- factor(wgc$g, levels=1:2, labels=c("male","female")) str(wgc$g) with(wgc, table(g,c)) class(wgc$g) wgc$g *2 # factors are not numbers levels(wgc$g) ## 3.1.2 盒狀圖 (box plot) boxplot(wgc$aa) dev.print(width=6, height=6, horizontal=FALSE) # print it directly dev.print(file="test_boxplot.pdf", device=pdf) # print to a file ## 3.1.3 長條圖(histogram) hist(wgc$aa) ## 3.2 把圖片存成檔案(output to a devise) # 在Linux作業系統下,你需要使用指令來存圖檔;在Windows作業系統中,你只 # 需要在圖片上按滑鼠右鍵即可令存為metafile(.emf), bitmap, postscript(.eps)等格式。 # 如果你對圖檔要求不高,使用png即可,若需要高畫質的圖檔(向量圖),則建 # 議存成metafile或postscript。 png(file="d://你的圖片存放路徑/test_histogram.png") # 存為png格式 hist(wgc$aa) dev.off() postscript(file="d://你的圖片存放路徑/test_histogram.ps") #存為ps格式 hist(wgc$aa) dev.off() pdf(file="d://你的圖片存放路徑/test_histogram.pdf") #存為pdf格式 hist(wgc$aa) dev.off() # 進階存圖檔法 # hist(wgc$aa) # dev.print(file="test_histogram02.jpg", width=480, height=480, device=jpeg) ## 3.3 轉換變數的格式(Coercion of objects, V 4.5.2) class(wgc$g) table(wgc$g) wgc$g <- as.character(wgc$g) #coerce to characters wgc$g wgc$g <- as.integer(wgc$g) #coerce to integers wgc$g wgc$g <- as.vector(wgc$g) #coerce back to vector wgc$g ##====================== ## 補充:管理資料檔的其他方式 ##====================== # 1、套裝軟體 gretl(須外於R單獨安裝)-- http://gretl.sourceforge.net/ # Gretl可以讓你匯入Excel, Eviews, SPSS, 和其他檔案格式,也可以將檔案匯出為text, R, 和Octave。 # 2、R套件RExcel # 參考資料:Heiberger, Richard M. & Neuwirth, Erich R Through Excel: A Spreadsheet Interface for Statistics, Data Analysis, and Graphics New York: Springer, 2009. # 它可以讓你在Excel(2002、2003、2007)中使用R(準確的說是使用R的Rcmdr套件)來管理和分析資料的R工具 # 安裝方式: # R啟動圖示上按右鍵以系統管理員身份開啟R視窗(注意第一個套件中的字是R-Excel-Installer且字首大寫) # > install.packages(c("rcom","RExcelInstaller","RthoughExcelWorkbooksInstaller","RcmdrPlugin.HH"), dependencies=TRUE) # > library(rcom) # > installstatconnDCOM() # > library(RExcelInstaller) # > installRExcel() #最後的系統校調時間可能比較久,須耐心等待 # > library(RthoughExcelWorkbooksInstaller) # > installRthoughExcel() # 安裝結束後,繼續: # > library(RcmdrPlugin.HH) # 最後再啟動桌面上的RExcell的圖示。 # 如果你使用的是Open Office,請到此套件網頁的Download下載ROOo,裡頭有安裝說明。(注意事項:說明書中提到的rscproxy套件,台灣的主機沒有存放;請到美國的servers下載。)