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 毫秒的延时,那么就要执行 ...
随机推荐
- oracle 查询当前正在执行的事务
SELECT s.sid, s.serial#, s.event, a.sql_text, a.sql_fulltext, s.username, s.status, s.machine, s.ter ...
- JQuery学习---JQuery深入学习
属性操作 $("p").text() $("p").html() $(":checkbox").val() $(".te ...
- Office 365实现单点登录系列(1)—域环境搭建
Hello 小伙伴们, 2018新年快乐,作为2018年首篇文章,怎么能不给大家带来点干货呢?这篇文章其实我9月底的时候已经在MSDN上发布过了,为表诚意,我更新了这篇文章,并把它组成了一个系列,2. ...
- strncpy()函数【转】
C/C++中的strncpy()函数功能为将第source串的前n个字符拷贝到destination串,原型为: char * strncpy ( char * destination, const ...
- Mac OS 10.8 配置SVN服务器
Mac 10.8开始,不再默认安装svn,需要自行安装 如果您安装了XCode,会随同安装svn 更省事的办法: 1.安装homebrew,看看官网 http://brew.sh/index_zh-c ...
- Python 常用文件
获取当前文件的路径: from os import path d = path.dirname(__file__) #返回当前文件所在的目录 # __file__ 为当前文件, 若果在ide中运行此行 ...
- [T-ARA][거짓말(Part.1)][谎言(Part.1)]
歌词来源:http://music.163.com/#/song?id=5403062 作曲 : 赵英秀 [作曲 : 赵英秀] 作词 : 安英民 [作词 : 安英民] 사랑한단 거짓말 보고싶을거란 ...
- codeforces 420D Cup Trick
codeforces 420D Cup Trick 题意 题解 官方做法需要用到线段树+平衡树(? 如果数据小的话似乎可以用莫队).然后代码好长好长.我补了一个只要用到树状数组的做法. 代码 #inc ...
- 019.2 map集合类
Map<k,v>Map:双列集合,一次存一对,键值对,类似于python的字典.共性功能:1.添加 v put(key,value) //返回key的旧值 putAll ...
- canvas学习笔记1
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...