即使是個R的初學者,都可以試一些簡單的方式來自定義新函數,方便自己工作:
 
R本身就有很多好用的function(函數),但函數的預設值未必是我們最常用的,這時候可以修改設定存成新函數名,簡少每次都要打同一串設定的麻煩,這是自定義新函數的最簡單應用。

例如:
自定義函數read.data,由read.csv改來:
> read.data <- function(file){
+     read.csv(file, row.names=1, stringsAsFactors=FALSE, na.strings=".”)
+ }
因為只有一個指令,大括號{}可省略變成
> read.data <- function(file) read.csv(file, row.names=1, stringsAsFactors=FALSE, na.strings=".”)
 
輸出一比資料做示範:
> write.csv(iris, file="iris.csv")
 
取前六筆資料和資料的structure,比較read.csv和自定義的read.data的結果:
> head(read.csv("iris.csv"))
> head(read.data("iris.csv"))
> str(read.csv("iris.csv"))
> str(read.data("iris.csv"))
 
1read.csv把第一欄的數字判定為一欄變數,read.data因為多了設定row.names的指令,第一欄變成raw.names。
2.read.csv把Species當作Factorread.data因為多了設定stringsAsFactors=FALSE的指令,文字串視為character。
 
PS. R裡面本身就有不少函數是這麼改出來的,像read.csv是來自read.table、paste0來自paste。
 
自定義新函數的一般寫法
函數的名字 <- function(input){
        對input做些運算,可能有好幾步
        ...
        最後的指令一般是輸出output
}
 
相关文章