学习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语言(自定义函数、循环语句、管道函数)的更多相关文章

  1. R语言中的循环函数(Grouping Function)

    R语言中有几个常用的函数,可以按组对数据进行处理,apply, lapply, sapply, tapply, mapply,等.这几个函数功能有些类似,下面介绍下这几个函数的用法. Apply 这是 ...

  2. shell脚本之循环语句与函数

    shell脚本之循环语句与函数 echo的用法: echo -n #表示不换行输出 echo -e #输出转义字符,将转义后的内容输出到屏幕上 转义字符: \n :换行,被输出的字符从"\n ...

  3. R语言学习 第四篇:函数和流程控制

    变量用于临时存储数据,而函数用于操作数据,实现代码的重复使用.在R中,函数只是另一种数据类型的变量,可以被分配,操作,甚至把函数作为参数传递给其他函数.分支控制和循环控制,和通用编程语言的风格很相似, ...

  4. js简介、基本语法、类型转换、变量、运算符、分支语句、循环语句、函数、函数调用

    javascript是个脚本语言,需要有宿主文件,他的宿主文件是html文件. 三个常用对话框 alert("")警告对话框,弹出一个警告对话框 <script> al ...

  5. Python循环语句及函数的定义

      循环语句¶ 重复执行某一个固定的动作或者任务 语法 for 变量 in序列: 语句1 语句2 ..... In [2]: # 列表知识只是以后会讲 # 比如[1,2,3,4,5,6,7] list ...

  6. java:javaScript(定义方式,循环语句,函数与参数,事件机制,控制台记录,event事件获取键盘ascii,confirm和prompt,事件和内置对象,获取input,点击更换背景色)

    1. 定义JS的两种方式: <!DOCTYPE> <html> <head> <meta charset="UTF-8"></ ...

  7. #9.5课堂JS总结#循环语句、函数

    一.循环语句 1.for循环 下面是 for 循环的语法: for (语句 1; 语句 2; 语句 3) { 被执行的代码块 } 语句 1 在循环(代码块)开始前执行 语句 2 定义运行循环(代码块) ...

  8. JavaScript的控制语句和循环语句和函数的总结

    10.控制语句---if语句 10_1:if-else语句 if(表达式){ 语句1: .... }else{ 语句1: .... }; 示例: var a = 1; if (a > 0){ a ...

  9. Javascript语法,变量类型,条件,循环语句,函数,面向对象

    1.JavaScript代码革两种存在形式: <!-- 方式一 --> <script type='txt/javascript' src='/js/comment.js'>& ...

  10. 单片机c语言教程:C51循环语句

    单片机c语言教程第十三课 C51循环语句 循环语句是几乎每个程序都会用到的,它的作用就是用来实现需要反复进行多次的操 作.如一个 12M 的 51 芯片应用电路中要求实现 1 毫秒的延时,那么就要执行 ...

随机推荐

  1. Python学习---DjangoForm的总结大全

    DjangoForm基础知识总结 1.Form是什么东西? 用于验证用户请求数据合法性的一个组件 2. Django的Form的实现步骤: a. 创建一个验证用户请求的模板 from django i ...

  2. 乘风破浪:LeetCode真题_008_String to Integer (atoi)

    乘风破浪:LeetCode真题_008_String to Integer (atoi) 一.前言 将整型转换成字符串,或者将字符串转换成整型,是经常出现的,也是必要的,因此我们需要熟练的掌握,当然也 ...

  3. 深入浅出SharePoint——使用WinDbg进行调试

  4. December 27th 2016 Week 53rd Tuesday

    A journey of one thousand miles begins with one step. 千里之行始于足下. No matter how slowly you walk, as lo ...

  5. December 26th 2016 Week 53rd Monday

    Better to light one candle than to curse the darkness. 与其诅咒黑暗,不如燃起蜡烛. If the world is so cruel, I wo ...

  6. ZT 设计模式六大原则(1):单一职责原则

    zt 设计模式六大原则(1):单一职责原则 分类: 设计模式 2012-02-21 09:52 25059人阅读 评论(65) 收藏 举报 设计模式stringclass编程 (THERE SHOUL ...

  7. 遍历Map集合的几种方式

    import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entr ...

  8. monad重新理解

    monad是高阶抽象类型: 包含类型构造器: monad抽象的核心是类型封装和类型转化(map). 实现monad的的类型必须实现(基础)类型的封装和类型转化的功能: 在此基础上实现其他的功能(基本依 ...

  9. PyTorch Notes | PyTorch 编程实践笔记

    [ 今天最开心的事情! ] PyTorch的stable版本更新为1.0之后,原本3D模型无脑out of memory.3D模型torch.backends.cudnn.benchmark必须Fal ...

  10. HDU 1711 Number Sequence (KMP简单题)

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...