学习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. R语言学习 第四篇:函数和流程控制

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  10. Java语言----三种循环语句的区别

    ------- android培训.java培训.期待与您交流! ---------- 第一种:for循环 循环结构for语句的格式:       for(初始化表达式;条件表达式;循环后的操作表达式 ...

随机推荐

  1. 《实时控制软件设计》第一周作业 欧梓峰 U201317662 (更新)

    CNC 插补计算程序分析 前言:插补(Interpolation),即机床数控系统依照一定方法确定刀具运动轨迹的过程.一般是已知起点坐标.终点坐标和轨迹,由数控插补计算程序实时的算出各个中间的坐标来拟 ...

  2. FTP协议标准命令

    FTP:文件传输协议(File Transfer Protocol) 文件传输协议(FTP)使得主机间可以共享文件.FTP 使用 TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连 ...

  3. POJ1189钉子和小球(DP)

    对钉子DP,如果钉子存在DP[i+1][j]+=DP[i][j]; DP[i+1][j+1]+=DP[i][j]; 如果不存在DP[i+2][j+1]+=4*DP[i][j]; 见代码:(有一个比较坑 ...

  4. js里一些经典的算法

    //1.找出某个数字在一组数组内的存不存在 如果存在 找出他所在的索引. function indexOf(arr,item){ var i; if(Array.prototype.indexOf){ ...

  5. bzoj1914

    这道题用转化补集的思想一下就很简单了考虑不包括原点的三角形,显然对于一个点,它与原点构成的直线在这条直线同侧的任意两点和这个点构成的三角形一定不是黄金三角形为了避免重复我们只考虑直线上方的两点然后我们 ...

  6. 【JS】Beginner7:Functions

    1.Function=Reusable blocks of code Passed arguments &  return a value save functions as the valu ...

  7. pthon核心编程-读书笔记:知识点摘录与总结(方便理解和快速记忆)

    Python 中的列表(大小可变的数组)和字典(哈希表)就是内建于语言本身的.在核心语言中提供这些重要的构建单元,可以鼓励人们使用它们, 缩短开发时间与代码量,产生出可读性更好的代码.C不提供, c+ ...

  8. js与jq基础记录

    1.在js传递参数中含加号(+)的处理方式: 只需要把js中传过去的+号替换成base64 编码 %2B:encodeURI(str).replace(/\+/g,'%2B'). 2.随机产生8位随机 ...

  9. SQL 必知必会&#183;笔记&lt;8&gt;分组数据

    1. 使用GROUP BY子句创建分组 示例: SELECT vend_id, COUNT(*) AS num_prods FROM Products GROUP BY vend_id; 注意 GRO ...

  10. js中定时器相关

    每三秒(3000 毫秒)弹出 "Hello" : setInterval(function(){ alert("Hello"); }, 3000); setIn ...