现在我们来尝试写几个Function
- 第一个是超简单的功能(Function),就是让两个数相加,我们把这个功能取个名字叫 add2。 (步骤1-3)
- 第二个稍微复杂一点,写一个功能,使我们取出某个vector里面所有大于n的值,同时,设置n 默认为10。(步骤4-7)
- 第三个再复杂一点,是要在dataframe中计算每一列的均值。
我的是在苹果电脑上运行的R studio,所以和windows下的界面会有一点不一样~
- 打开R studio,在左上角写script的位置新开一个文档开始写function
2. 在左上角的代码区输入下面的代码,点击运行
add2 <- function(x,y){
x+y
}
3. 在第二步点击运行后,在左下角写个,输入后就会得到返回值 7。第一个功能就写好啦,大家可以随意更改括号里的两个数字。
add2(2,5)
4. 第二个Function,我们取名叫above,代码如下,意思是在 x 当中取出大于 n的所有的数字
above <- function(x,n){
use <- x>n ## 设定一个逻辑判断
x[use] ## 在x中取符合上面逻辑判断的值
}
5. 在运行完这个代码后,我们可以先定义一个x,为1到20的所有的数
然后输入above(x,10),就得到结果啦~
6. 为了设置n的默认值,我们把第四步的代码做一点小修改
above <- function(x,n=10){
use <- x>n ## 设定一个逻辑判断
x[use] ## 在x中取符合上面逻辑判断的值
}
7. 在设置完默认值后,不用输入n也能得到大于10的值。但如果想得到大于14的值,则还是要在function中定义n为14
8. 最后要写的function是要在dataframe中计算每一列的均值。这个功能我们命名为columnmean。写完后运行这些代码
columnmean <- function(x, removeNA=TRUE){ ## removeNA=TRUE表示默认去掉缺失值NA
nc <-ncol(x) ## 用ncol找到x中的列数,赋值给nc
means <- numeric(nc) ## 设置一个储存均值的向量叫means,means的长度等于nc
for(i in 1:nc){ ## 开始循环,从第一列循环到最后一列
means[i]<- mean(x[,i], na.rm=removeNA) ##x中的每一列去均值,赋值给means[i]
}
means ##在完成最后一个循环后,输出均值
}
9. 现在,用columnmean功能选取 airquality 这个dataframe里每列的均值,并在计算时去掉缺失值。但如果我们不想去掉缺失值,则在function中加上FALSE。
那这三个功能就写好啦,保存好后,后续可以调用这些功能,这样就不用每次都单独把代码写一遍了。