發表文章

目前顯示的是有「R」標籤的文章

[R] Loop 迴圈小筆記

for ( i in 1:10 )  print( i ) 會發現i是從0開始跳 ; for ( i in seq(1:10) )  print( i ) i是從1開始跳

ggplot2的一些註記

qplot(mpg, data=mtcars, geom="density", fill=gear, alpha=I(.5),        main="Distribution of Gas Milage", xlab="Miles Per Gallon", ylab="Density") qplot是ggplot2功能裡面比較速成的畫圖方式,類似plot()但是多了很多參數可以用 例如fill是根據群組來著色,alpha是指定圖形的透明度,alphao裡的I()是告訴R不要把我的數字偷偷變成其它類型!

[R] 如何將圖的說明放在圖框外

圖片
如果用R畫一張圖 通常要自己加上圖的說明 也就是legend 例如以下語法可以畫出一張很簡單的圖 但是沒有說明 沒有人知道圈圈是什麼 plotest 所以加了legend以後就有說明,如下 plotest 如圖,我把說明加在左上角 但我現在想把legend放在圖外面 因為放在圖形裡面有時候會擋到圖 步驟如下 //利用par的功能設定多圖形視窗,一定要將xpd=NA,意思是圖形的座標是從R裡面圖形視窗的邊框開始算 par(mfrow = c(1,1),xpd=NA,oma=c(3,0,0,0)) //par("user")是一個很有用的變數可以取出四個邊的座標,依序是左右下上,所以[1],[4]是將圖說明放在左上搭配xjust與yjust就可以再微調座標 legend(par("usr")[1],par("usr")[4],"x",col="black", pch=1,xjust=0, yjust=-0.2) 產生的圖形如下 圖說明已經跟圖分開 放上左上角了

[R] 如何在一段String裡面加上變數

寫Java的人都知道,如果要在String裡面加上一個變數的話要用+把變數塞到語法裡 例如 public class Demo1 { public static void main(String[] args) { String name = "梁朝偉"; System.out.print("我愛" + name); } } 以上就會印出 我愛梁朝偉 如果是R的話呢? 要使用paste()函數把字黏起來 要加的變數前後得加逗號 例如 name 以上就會印出 I love 周星星 yaya 是有點冷門又很實用的函數

R中的強賦值

在R裡面給值有很多種方法 有<-,->,<<-,->> 其中一種比較特別的是<<-,->> 這是一種強迫的概念 例如我寫一個function,照理說function裡用到的變數是不會出現在workspace的 但如果一旦使用了<<-,->>來給值 例如 10->>a 那麼a=10就會出現在workspace裡 有點像是在java裡宣告public static變數的味道 最近論文又開始動工了 有時候寫程式想了很久忽然在洗澡的時候靈光一現 這種虐待自己腦袋的感覺還蠻爽的

R中Try and Catch的寫法

圖片
在R裡的Try and Catch可能比較少人用到 因為R code出現錯誤時不會導致R整個停機 只會出現錯誤訊息 而且可以繼續運作 但是因為我的系統是用Java去call R,R如果有error會停止運作然後害我整個系統死機 所以我需要一個方法可以先楨測我的R code有沒有error,如果有錯就不往下執行了 範例如下: 如果我直接在R裡面執行 a b c 會看直接看到錯誤,因為我不能把字串去除以一個數值 所以我加了try and catch之後 Erroresult 結果就會像這樣了,Error已經不是紅色,而是一個字串輸出,可以像我一樣把tryCatch的結果再另存到一個變數,例如Erroresult,這樣你就可以把這個error message存著 Try and Catch的架構像這樣,其中warning,error,finally的結構一定要有,不然會報錯 tryCatch({ #要執行的指令放這裡 },warning = function(war){ print(paste("MY_WARNING: ",war)) #如果有warning則輸出warning,"MY_WARNING: "這一行可以自己改 },error = function(err) { print(paste("MY_ERROR: ",err)) #如果有error則輸出error,"MY_Error: "這一行可以自己改 },finally = { print(paste("End Try&Catch")) #最後一定要執行的指令或輸出 })

R與Java的結合

圖片
如果有人需要用java寫出一個可以應用R的介面 我在這裡先提供如何用java成功的call R,其中有很多眉眉角角,而R的文件也不是很清楚,這是我的好朋友郭董幫我試出來的,放在這裡供鄉民參考參考 Step 1. 先把java的開發環境都設定好,先裝好JDK及IDE,例如Netbean,設好環境變數等 Step 2.請先到rjava的網站下載 3個最重要的jar檔案 http://www.rforge.net/JRI/files/ ,請記得3個.jar的檔都要下載回來放在同一個資料夾 Step 3. 接下來的步驟非常重要,如果你尿急的話請先去上完廁所再回來,因為這個設定關係到是否可以在java裡直接下r的指令,並產生出結果,首先,請到控制台\所有控制台項目\系統\進階系統設定\進階\環境變數,我們要加入 2個路徑,第一個是r.dll的路徑,這是你安裝好R之後一定會有的,就在你的R目錄下面(大部份的人是C:\Program Files\R\R-2.15.1\bin\i386 or x64)請把這一條加入環境變數裡,如下圖(請注意,你的路徑有可能不一樣,端看你的R安裝在那裡) 然後再把.jar存放的路徑加進去環境變數裡,請記得前後一定要用;分隔 (請注意,你的路徑有可能不一樣,端看你將.jar放在哪裡) Step 4. 打開Java IDE測試一下,如果跑出 15,那就代表你可以成功的在java裡call R了 import org.rosuda.JRI.Rengine; public class RJava {     public static void main (String[] args)     {         // 宣告一個Rengine         Rengine re=new Rengine (new String [] {"--vanilla"}, false, null);         if (!re.waitForR())         {   ...

如何看到R pacakge所使用的原始程式碼

圖片
有用R的人都知道 R package就是有很多佛心來著的人 把一些統計的應用方法直接寫好程式 然後再寫一個文件教你怎麼用 要用的時候只要下載安裝到R裡就可以了 可以想成Andriod手機 上網可以下載很多免費的App裝在手機裡 這也是為什麼很多人喜歡用R的原因 免費就算了 還有很多人發展一個新的統計方法之後 會順便把R package也寫好讓大家下載 但是如何看到R package裡面的原始程式碼呢 只要在R裡面下<package name>:::funtion 例如 我想看box-cox方法到底是怎麼寫出來的,就可以打MASS:::boxcox.default MASS就是package的名稱,boxcox.default就是方法的名字 出現的畫面如下 那如果要查不是在package裡面的呢? 直接打function名稱就好 例如迴歸的建模指令lm

使用R做ARL的蒙地卡羅模擬

這是上學期上品質管理的時侯 老師出的作業之一 用任何一種程式語言模擬製程偏移之後 ARL的表現 其實我本來也不會寫 後來在網路上查到有人用C++寫好了 但我不好意思照抄 所以就把C++轉成R 因為品管的老師很喜歡出這個題目 我就放上來解救大家 但是每一個老師的假設都不一樣,所以如果有人要抄的話還是要注意一下 這是假設製程在第100點以後開始偏移,所以前100點是服從N~(0,1),100點以後就看老師要求的偏移量是什麼,去改k的值 a<-0              # 在陣列中 ' 列 ' 的位移 n<-20            # 樣本數 m1<-0           # 原始 mean sigma<-1     # 原始 sigma L<-3               # 管制界線的寛度 K<-1.5           # 偏移程度 m2<-m1+K*sigma                                                   ...