R Lesson:自定義新函數(給初學者)~函數設定改成自己常用的
即使是個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"))
1. read.csv把第一欄的數字判定為一欄變數,read.data因為多了設定row.names的指令,第一欄變成raw.names。
2.read.csv把Species當作Factor,read.data因為多了設定stringsAsFactors=FALSE的指令,文字串視為character。
PS. R裡面本身就有不少函數是這麼改出來的,像read.csv是來自read.table、paste0來自paste。
自定義新函數的一般寫法
新函數的名字 <- function(input){
對input做些運算,可能有好幾步
...
最後的指令一般是輸出output
}