# Function-定义新的函数

Functions通过function()来定义，可以当作R对像来保存
f <- function(arguments) {#自定义各种活动}

Functions在R中相当于“第一个类别对象”，也就是说可以像R中其他对象一样来操作它，Functions能在其他的Functions中存在，其中的参数可以被传递，其返回值是最后的结果。在Functions中，都会有相应的参数，你可以定义参数的值 ，也并不是所有的参数的值都要来定义
R中functions的参数可以通过位置来定值，也可以通过命名等式来赋值
> args(sd)
function (x, na.rm = FALSE)
NULL #args(sd)，可以看到sd相应的参数
> mydata <- rnorm(100)
> sd(mydata)
> sd(x = mydata)
> sd(x = mydata, na.rm = FALSE)
> sd(na.rm = FALSE, x = mydata)
> sd(na.rm = FALSE, mydata)

> args(lm)
function (formula, data, subset, weights, na.action,
method = "qr", model = TRUE, x = FALSE,
y = FALSE, qr = TRUE, singular.ok = TRUE,
contrasts = NULL, offset, ...)
lm(data = mydata, y ~ x, model = FALSE, 1:100)
lm(y ~ x, mydata, 1:100, model = FALSE) #根据位置来定义的参数值，所以位置必须一一对应。

f <- function(a, b = 1, c = 2, d = NULL) {
}

f <- function(a, b) {
a^2
}
f(2)

f <- function(a, b) {
print(a)
print(b)
}
> f(45)
[1] 45
Error in print(b) : argument "b" is missing, with no default
>

...

myplot <- function(x, y, type = "l", ...) {
plot(x, y, type = type, ...)
}
> mean
function (x, ...)
UseMethod("mean")
> args(paste)
function (..., sep = " ", collapse = NULL)
> args(cat)
function (..., file = "", sep = " ", fill = FALSE,
labels = NULL, append = FALSE)
> args(paste)
function (..., sep = " ", collapse = NULL)
> paste("a", "b", sep = ":")
[1] "a:b"
> paste("a", "b", se = ":")
[1] "a b :"

Roger D. Peng的《Computing for Data Analysis》