R语言(自定义函数、循环语句、管道函数)
学习R语言半年多了,以前比较注重统计方法上的学习,但是最近感觉一些基础知识也很重要。去年的参考资料是《R语言实战》,今年主要是看视频。推荐网易云课堂里的教程,很多资料都是很良心的~
目前学习的是:R语言数据分析挖掘实战,讲的很全,从基础知识到R语言机器学习的应用。
(我是先从后面机器学习开始学的,发现老师在里面用到很多自定义函数、循环,以前在书上看到这些也没有实际操作过,所以赶紧看前面的视频补补课)
今天的例子都很简单啦...
1、while循环
s<-1
i<-0
while(i<=100)
{
s<-s+i
i<-i+1
}
s
while(/prod(:i)-/prod(:(i+))>0.001)
{
print(i)
e<-e+/prod(:i)
i<-i+
}
e
#添加print(i),可以看出具体的i值
2、for循环
a<-c(,,,,)
for(i in c(:length(a)))
{
print(i)
}
#打印序号
a<-c(,,,,)
for(i in a)
{
print(a[i])
}
#打印元素
#or
a<-c(,,,,)
for(i in a)
{
print(i)
}
mat<-as.data.frame(diag(()))
for(i in :)
{
for(j in :)
if(i>=j)
{
mat[i,j]=paste(i,"*",j,"=",i*j)
}
else{mat[i,j]=""}
}
mat
#打印99乘法表
打印出来的乘法表:
> mat
V1 V2 V3 V4 V5 V6 V7 V8 V9
* =
* = * =
* = * = * =
* = * = * = * =
* = * = * = * = * =
* = * = * = * = * = * =
* = * = * = * = * = * = * =
* = * = * = * = * = * = * = * =
* = * = * = * = * = * = * = * = * =
3、循环嵌套
b<-matrix(c(:),)
for(i in c(:nrow(b)))
for(j in c(:ncol(b)))
{
print(b[i,j])
}
b
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 5 9 13 17 21
[2,] 2 6 10 14 18 22
[3,] 3 7 11 15 19 23
[4,] 4 8 12 16 20 24
返回的是这样的:
[1] 1 #a11
[1] 5 #a12
[1] 9
[1] 13
[1] 17
[1] 21
[1] 2 #a21
[1] 6
[1] 10
[1] 14
[1] 18
[1] 22
[1] 3
[1] 7
[1] 11
[1] 15
[1] 19
[1] 23
[1] 4
[1] 8
[1] 12
[1] 16
[1] 20
[1] 24
4、repeat()函数
s<-
i<-
repeat{
if(i>){break()} #break()即推出循环
s<-s+i
i<-i+
}
s
#repeat()
5、自定义一个计算矩阵乘积的函数
mat1<-matrix(c(:),nrow = ,ncol = );mat1
mat2<-matrix(c(:),nrow = ,ncol = );mat2
f<-function(x,y)
{
xcol<-dim(x)[]
yrow<-dim(y)[]
m<-dim(x)[]
n<-dim(y)[]
if(xcol!=yrow) #向量乘积的要求
{
print("error")
return()
}
else #if...else语句
{
mat<-matrix(,nrow=dim(x)[],ncol=dim(y)[]) #首先要定义一个矩阵作为结果矩阵
for(i in c(:m))
for(j in c(:n))
mat[i,j]<-sum(x[i,]*y[,j])
return(mat)
}
}
f(mat1,mat2)
mat1%*%mat2 #验证函数,bingo
6、管道函数%>%
用法
a%>%b等价于f(a,b)
a %>%f(a,.,c)等价于f(a,b,c)【里面是.,看清楚!】
一个简单的栗子
plus<-function(x,y,z)
{
return(x*y+z) }
plus(,,)
%>%plus3(,.,)
计算f(x)=sin(x+1)^2在x=4的值
x<-
a<-x+
b<-a^
d<-sin(b)
d
#利用管道函数:
f1<-function(x){return(x+)}
f2<-function(x){return(x^)}
f3<-function(x){return(sin(x))}
x%>%f1()%>%f2()%>%f3()
再来一个栗子,把时间变成这样的: "2018-05-02 19:50:02”
先定义一个随机的时间矩阵:
data<-as.Date("2017-5-2");data
hour<-sample(:,)
min<-sample(:,)
second<-sample(:,)
dat<-data.frame(data,hour,min,second)
> dat
data hour min second
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
利用到一个包,里面一个函数unite,有个小示范
library(tidyr)
a<-data.frame(a1=c(:),a2=c(:));a
unite(a,a12,a1,a2,sep="|_|") #将矩阵a里的a1列和a2列通过|_|连接成新列a12
a<-data.frame(a1=c(:),a2=c(:));a
a1 a2
变成了这样
a12
|_|
|_|
|_|
下面可以用管道函数转变时间的显示啦:
dat%>%unite(datahour,data,hour,sep=" ")%>%unite(datatime,datahour,min,second,sep=":")
结果是这样:
datatime
-- ::
-- ::
-- ::
-- ::
-- ::
-- ::
-- ::
-- ::
-- ::
-- ::
-- ::
-- ::
-- ::
-- ::
-- ::
>
R语言(自定义函数、循环语句、管道函数)的更多相关文章
- R语言中的循环函数(Grouping Function)
R语言中有几个常用的函数,可以按组对数据进行处理,apply, lapply, sapply, tapply, mapply,等.这几个函数功能有些类似,下面介绍下这几个函数的用法. Apply 这是 ...
- shell脚本之循环语句与函数
shell脚本之循环语句与函数 echo的用法: echo -n #表示不换行输出 echo -e #输出转义字符,将转义后的内容输出到屏幕上 转义字符: \n :换行,被输出的字符从"\n ...
- R语言学习 第四篇:函数和流程控制
变量用于临时存储数据,而函数用于操作数据,实现代码的重复使用.在R中,函数只是另一种数据类型的变量,可以被分配,操作,甚至把函数作为参数传递给其他函数.分支控制和循环控制,和通用编程语言的风格很相似, ...
- js简介、基本语法、类型转换、变量、运算符、分支语句、循环语句、函数、函数调用
javascript是个脚本语言,需要有宿主文件,他的宿主文件是html文件. 三个常用对话框 alert("")警告对话框,弹出一个警告对话框 <script> al ...
- Python循环语句及函数的定义
循环语句¶ 重复执行某一个固定的动作或者任务 语法 for 变量 in序列: 语句1 语句2 ..... In [2]: # 列表知识只是以后会讲 # 比如[1,2,3,4,5,6,7] list ...
- java:javaScript(定义方式,循环语句,函数与参数,事件机制,控制台记录,event事件获取键盘ascii,confirm和prompt,事件和内置对象,获取input,点击更换背景色)
1. 定义JS的两种方式: <!DOCTYPE> <html> <head> <meta charset="UTF-8"></ ...
- #9.5课堂JS总结#循环语句、函数
一.循环语句 1.for循环 下面是 for 循环的语法: for (语句 1; 语句 2; 语句 3) { 被执行的代码块 } 语句 1 在循环(代码块)开始前执行 语句 2 定义运行循环(代码块) ...
- JavaScript的控制语句和循环语句和函数的总结
10.控制语句---if语句 10_1:if-else语句 if(表达式){ 语句1: .... }else{ 语句1: .... }; 示例: var a = 1; if (a > 0){ a ...
- Javascript语法,变量类型,条件,循环语句,函数,面向对象
1.JavaScript代码革两种存在形式: <!-- 方式一 --> <script type='txt/javascript' src='/js/comment.js'>& ...
- 单片机c语言教程:C51循环语句
单片机c语言教程第十三课 C51循环语句 循环语句是几乎每个程序都会用到的,它的作用就是用来实现需要反复进行多次的操 作.如一个 12M 的 51 芯片应用电路中要求实现 1 毫秒的延时,那么就要执行 ...
随机推荐
- UDF/UDAF开发总结
参考文章: https://www.cnblogs.com/itxuexiwang/p/6264547.html https://www.cnblogs.com/eRrsr/p/6096989.htm ...
- 乘风破浪:LeetCode真题_002_Add Two Numbers
乘风破浪:LeetCode真题_002_Add Two Numbers 一.前言 这次的题目是关于链表方面的题目,把两个链表对应节点相加,还要保证进位,每个节点都必须是十进制的0~9.因此主要 ...
- 沉淀再出发:redis的安装和使用
沉淀再出发:redis的安装和使用 一.前言 下面让我们看看Redis这个键值对内存数据库的使用方法和相关注意事项. 二.Redis的安装和使用 2.1.Redis的定义 REmote DIction ...
- 骑士周游问题跳马问题C#实现(附带WPF工程代码)
骑士周游问题,也叫跳马问题. 问题描述: 将马随机放在国际象棋的8×8棋盘的某个方格中,马按走棋规则进行移动.要求每个方格只进入一次,走遍棋盘上全部64个方格. 代码要求: 1,可以任意选定马在棋盘上 ...
- Markdown语法初体验
前言 由于把博客主题样式换了,所以改用Markdown语法,让代码看起来更加舒服一些. 照葫芦画瓢 这里是H1标题(===) 这里是H2标题(---) 使用一个#号 使用两个#号 使用三个#号 引用 ...
- SVN篇
启动SVN : svnserve -d -r svn 查看进程: ps -ef | grep svmserve -------------------------------------------- ...
- PAT——1035. 插入与归并
根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列.每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置.如此迭代直到全部元素有序. 归并排序进行如下迭 ...
- 黑少微服务商店之Iron Cloud微服务开发云
近日,由黑少微服务研发团队推出的Iron Cloud微服务开发云已经正式对外提供服务,这是国内第一家基于云端操作的微服务专业开发工具. Iron Cloud 微服务开发云(www.ironz.com) ...
- vue 路由缓存 路由嵌套 路由守卫 监听物理返回
最近开发vue项目,遇到的一些问题,这里整合一下,看到一些博客已经有写相关知识,然后自己再次记录一下. 这是关于vue路由相关比较常见的问题,以后遇到相关路由的问题,会不断更新这篇博客. 需求1:从填 ...
- 使用XWAF框架(4)——LunarCalendar日历组件
XWAF提供了管理日历的com.xwaf.date.LunarCalendar静态类,可以直接使用,非常方便.该类包括六个主要静态方法: 4.1 isLeapYear(int year) 判断公历年 ...