首页

文章

R语言怎么写函数

发布网友 发布时间:2022-04-19 09:56

我来回答

3个回答

热心网友 时间:2023-08-26 01:00

要把你的函数source进内存才能用,也可以把你定义函数的文件一行一行的执行,之后就可以用了。

不像matlab,会自己去找函数名。在R中,存在硬盘上的函数定义文件是没法用的……

热心网友 时间:2023-08-26 01:00

R语言实际上是函数的集合,用户可以使用base,stats等包中的基本函数,也可以自己编写函数完成一定的功能。但是初学者往往认为编写R函数十分困难,或者难以理解。这里对如何编写R函数进行简要的介绍。
函数是对一些程序语句的封装。换句话说,编写函数,可以减少人们对重复代码书写,从而让R脚本程序更为简洁,高效。同时也增加了可读性。一个函数往往完成一项特定的功能。例如,求标准差sd,求平均值,求生物多样性指数等。R数据分析,就是依靠调用各种函数来完成的。但是编写函数也不是轻而易举就能完成的,需要首先经过大量的编程训练。特别是对R中数据的类型,逻辑判别、下标、循环等内容有一定了解之后,才好开始编写函数。
对于初学者来说,最好的方法就是研究现有的R函数。因为R程序包都是开源的,所有代码可见。研究现有的R函数能够使编程水平迅速提高。
R函数无需首先声明变量的类型,大部分情况下不需要进行初始化。一个完整的R函数,需要包括函数名称,函数声明,函数参数以及函数体几部分。
1.
函数名称,即要编写的函数名称,这一名称就作为将来调用R函数的依据。
2.
函数声明,包括
<-
function,
即声明该对象的类型为函数。
3.
函数参数,这里是输入的数据,函数参数是一个虚拟出来的一个对象。函数参数所等于的数据,就是在函数体内部将要处理的值,或者对应的数据类型。
函数体内部的程序语句进行数据处理,就是对参数的值进行处理
,这种处理只在调用函数的时候才会发生。函数的参数可以有多种类型。R
help的界面对每个函数,及其参数的意义及所需的数据类型都进行了说明。
4.
函数体
常常包括三部分.
(1).
异常处理
输入的数据不能满足函数计算的要求,或者类型不符,
这时候一定要设计相应的机制告诉用户,输入的数据在什么地方有错误。
错误又分为两种。
第一种,
如果输入的数据错误不是很严重,可以经过转换,变为符合处理要求的数据时,
此时只需要给用户一个提醒,告知数据类型不符,但是函数本身已经
进行了相应的转换。
第二种,数据完全不符合要求,这种情况下,就
要终止函数的运行,而告知因为什么,函数不能运行。这样,用户在
使用函数的情况先才不至于茫然。
(2).
运算过程
包括具体的运算步骤。
运算过程和该函数要完成的功能有关。
R运算过程中,应该尽量减少循环的使用,特别是嵌套循环。R提供了
apply,replicate等一系列函数,来代替循环,应该尽量应用这些函数,
提高效率。
如果在R中实在太慢,那么核心部分只能依靠C或者Fortran
等语言编写,然后再用R调用这些编译好的模块,达到更高的效率。
运算过程中,需要大量用到if等条件作为判别的标准。if和while都是需要数据TRUE/FALSE这样的逻辑类型变量,这就意味着,if内部,往往是对条件的判别,例如
is.na,
is.matrix,
is.numeric等等,或者对大小的比较,如,if(x
>
0),
if(x
==
1),
if(length(x)==
3)等等。if后面,如果是1行,则花括号可以省略,否则就必须要将所有的语句都放在花括号中。这和循环是一致的。
例子:
##
if与条件判断
fun.test
<-
function(a,
b,
method
=
"add"){
if(method
==
"add")
{
##
如果if或者for/while;
res
<-
a
+
b
##
等后面的语句只有一行,则无需使用花括号。
}
if(method
==
"subtract"){
res
<-
a
-
b
}
return(res)
##
返回值
}
###
检验结果
fun.test(a
=
10,
b
=
8,
method
=
"add")
fun.test(a
=
10,
b
=
8,
method
=
"substract")

热心网友 时间:2023-08-26 01:01

R语言实际上是函数的集合,用户可以使用base,stats等包中的基本函数,也可以自己编写函数完成一定的功能。但是初学者往往认为编写R函数十分困难,或者难以理解。这里对如何编写R函数进行简要的介绍。
函数是对一些程序语句的封装。换句话说,编写函数,可以减少人们对重复代码书写,从而让R脚本程序更为简洁,高效。同时也增加了可读性。一个函数往往完成一项特定的功能。例如,求标准差sd,求平均值,求生物多样性指数等。R数据分析,就是依靠调用各种函数来完成的。但是编写函数也不是轻而易举就能完成的,需要首先经过大量的编程训练。特别是对R中数据的类型,逻辑判别、下标、循环等内容有一定了解之后,才好开始编写函数。 对于初学者来说,最好的方法就是研究现有的R函数。因为R程序包都是开源的,所有代码可见。研究现有的R函数能够使编程水平迅速提高。
R函数无需首先声明变量的类型,大部分情况下不需要进行初始化。一个完整的R函数,需要包括函数名称,函数声明,函数参数以及函数体几部分。

1. 函数名称,即要编写的函数名称,这一名称就作为将来调用R函数的依据。
2. 函数声明,包括 <- function, 即声明该对象的类型为函数。
3. 函数参数,这里是输入的数据,函数参数是一个虚拟出来的一个对象。函数参数所等于的数据,就是在函数体内部将要处理的值,或者对应的数据类型。 函数体内部的程序语句进行数据处理,就是对参数的值进行处理 ,这种处理只在调用函数的时候才会发生。函数的参数可以有多种类型。R help的界面对每个函数,及其参数的意义及所需的数据类型都进行了说明。
4. 函数体
常常包括三部分.
(1). 异常处理
输入的数据不能满足函数计算的要求,或者类型不符, 这时候一定要设计相应的机制告诉用户,输入的数据在什么地方有错误。 错误又分为两种。
第一种, 如果输入的数据错误不是很严重,可以经过转换,变为符合处理要求的数据时, 此时只需要给用户一个提醒,告知数据类型不符,但是函数本身已经 进行了相应的转换。
第二种,数据完全不符合要求,这种情况下,就 要终止函数的运行,而告知因为什么,函数不能运行。这样,用户在 使用函数的情况先才不至于茫然。
(2). 运算过程
包括具体的运算步骤。 运算过程和该函数要完成的功能有关。
R运算过程中,应该尽量减少循环的使用,特别是嵌套循环。R提供了 apply,replicate等一系列函数,来代替循环,应该尽量应用这些函数, 提高效率。 如果在R中实在太慢,那么核心部分只能依靠C或者Fortran 等语言编写,然后再用R调用这些编译好的模块,达到更高的效率。
运算过程中,需要大量用到if等条件作为判别的标准。if和while都是需要数据TRUE/FALSE这样的逻辑类型变量,这就意味着,if内部,往往是对条件的判别,例如 is.na, is.matrix, is.numeric等等,或者对大小的比较,如,if(x > 0), if(x == 1), if(length(x)== 3)等等。if后面,如果是1行,则花括号可以省略,否则就必须要将所有的语句都放在花括号中。这和循环是一致的。

例子:
## if与条件判断
fun.test <- function(a, b, method = "add"){
if(method == "add") { ## 如果if或者for/while;
res <- a + b ## 等后面的语句只有一行,则无需使用花括号。
}
if(method == "subtract"){
res <- a - b
}
return(res) ## 返回值
}
### 检验结果
fun.test(a = 10, b = 8, method = "add")
fun.test(a = 10, b = 8, method = "substract")
ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 “君不见巴丘古城如培塿”的出处是哪里 带“奈何”的诗句大全(229句) 里翁行()拼音版、注音及读音 带“不虑”的诗句 “鲁肃当年万人守”的出处是哪里 无尘防尘棚 进出口报关流程,越详细越好。谢谢大家指教。 双线桥不是看化合价升多少就标多少的吗?为什么CL2+2KI=2KCL+I2中I失... 出师表高锰酸钾有画面了吗 2021年幼儿园新学期致家长一封信 电脑屏幕一条黑线怎么办? 销售代理商销售代理商的特点 商业代理商业代理的特征 如何看微信有没有开通微众银行 为什么微众没有开户 微众银行怎么开户 微众银行APP开户流程是什么? 唐古拉山海拔唐古拉山海拔是多少 怎么看待取消跳广场舞的人的退休金 如何选购新鲜的蓝田水柿? 恭城水柿柿树作用 创维洗衣机使用教程 创维全自动洗衣机怎么使用 自动开门器 狗羊属相婚姻相配吗 3岁的小孩不会说话怎么办 3岁孩子不会说话,应该挂什么科? 3岁小孩不会说话正常吗 鹿茸炖乌鸡怎么做? 新型冠状肺炎吃什么药可以预防 冰箱上电后一直响 食品生产许可证编号开头为“ G”。 r语言中如何统计满足制定条件的行数? r语言中对象的类型和长度分别通过函数什么得到 r语言 length和ncol的区别 R语言之—字符串处理函数 手机微信怎样定时发消息 微信有没定时发送功能 怎样可以设置定时发送微信信息 芯片是我国科技的软肋,台积电若不给麒麟处理器代工,该怎么办? PMIC芯片上市公司有哪些? 江苏一盛荣芯片科技有限公司怎么样? 芯片制造关键设备再突破,我们离拥有自己的芯片还有多远? 股票A股中的科技板块,是指半导体芯片行业吗? 英特尔激进扩张强化美国芯片生产链,芯片业又会迎来巨震吗? 江苏中创芯片科技有限公司怎么样? 华为获芯片供货,若过度依赖国外的科技,对我国的芯片产业会有何影响? 国内芯片龙头公司有哪些? 中国的芯片制造遇到了哪些技术瓶颈呢? IBM已开发出全球首个2nm芯片,最终会带来哪些影响? 半导体芯片龙头股排名 哪个央企参股*半导体企业 R语言里 len和length的区别 R语言自己定义一个函数.这个句子那里输错了……见图片 r语言中, == 和=,<-各自的区别 如何查看R语言函数源代码 R语言 seq函数 洋葱OMALL和天猫国际的区别是什么呀?哪个比较靠谱啊? r语言中怎样查看函数源代码 404 Not Found r语言 (argument if of length zero)求解答 r语言将变量中的缺失值赋值怎么写 R软件中x<-seq(-3,3,0.02)中三个数字代表什么意思 R语言regexpr中attr是什么意思啊 R语言“seq函数”是什么? 美拍视频怎么下载到电脑 美拍视频下载到电脑的方法 美拍网页版上的视频怎么下载到电脑上 美拍视频怎么下载保存到电脑? 请问如何将美拍的视频下载到电脑上呢? 美拍上的无水印高清视频怎么批量下载到电脑? 如何将美拍视频作者页中的视频都保存到电脑上? 美拍短视频要怎么保存视频到电脑上?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com