#r语言(二)笔记

#早复习

#概述:R是用于统计分析、绘图的语言和操作环境
#对象:
#数据类型--统称为对象
#向量(vector):用于存储数值型、字符型或逻辑型数据的一维数组。
#定义向量:
v<-1
v1<-c(1,2,3) 或者 assign('v1',c(1,2,3))
v<-1:10 #1~10
is.vector(v)
#向量的输出:
v 或者 print(v1)
#向量的操作函数:
#排序:sort(v1) 倒序: rev(v1)
#最大值 最小值 平均值
max(v1) min(v1) mean(v1)

#矩阵(matrix):矩阵是二维数组,可以描述二维数据
#定义矩阵
#dim函数(拆分向量)
m1<-1:100
dim(m1)<-c(10,10)
#matrix函数
m2<-matrix(1:6,2,3)
m3<-matrix(1:6,3,2)
#array函数
m4<-array(1:30,dim=c(5,6))
#矩阵下标
m4[2,2]
#矩阵相乘 %*%
m2%*%m3
#矩阵转置
m4<-matrix(1:24,4,6)
aperm(m4)

#数组(array):数组与矩阵类似,是矩阵的扩展,维度≥3.
#定义数组
#dim函数
a1<-1:24
dim(a1)<-c(3,4,2)
#array函数
a2<-array(1:60,dim=c(3,4,5))
#数组下标
a2[1,1,2]
#自定义对象:
#添加属性方法
#man1<-c() #内容为空的对象,null不能有属性的
man1<-c(100)
attributes(man1) #查看属性
attr(man1,'name')<-'bai'
attr(man1,'dept')<-'sxb'
#list方法(json)
man2<-list(name='zhw',dept='sxb',child.count=1,child.name=c('3.0'))
#获取对象属性:$
man2$name
man2$child.name;

#分组统计
course<-c('语文','数学','英语','数学','英语','英语');
score<-c(100,20,50,30,50,48)
statef<-factor(course) #分类因子
tapply(score,statef,max);
tapply(score,statef,min);
tapply(score,statef,mean);
tapply(score,statef,var);

#其他
help.start();
rm(list=ls()) #清空所有对象
objects() #查看所有对象
is.xxx #判断类型
as.xxx #转换类型

###注释
#控制语句
#条件语句
#if-else语句
# if
num<-3
if(num==3) print('num==3')
if(num==3){print('num==3')}

#if else
num<-2
if(num!=3)print('num!=3') else print('num==3')

#else if
if(num==1){
print('num==1')
}else if(num==2){
print('num==2')
}else{ ##上一个结束大括号一定要和else 在同一行,否则报错
print('其他')
}
#ifelse
x<-1
ifelse(x>2,y<-2*x,y<-3*x) ## 三目运算符

#switch语句 switch(expr, list)
#用法1 expr为数值型
num<-5
switch(num,'值为1','值为2','值为3','值为4')# 数值大小,对应的list的项
switch(2,'值为1','值为2','值为3','值为4')
switch(2*2,5-4,5+4,5/4,5*4) #第一个参数 可以为 运算符
#用法2 expr为字符串 list为有名定义时
mylike<-'水果';
switch(mylike,水果='苹果',蔬菜='茄子') #已知mylike值水果,它会找有名list中是否有这个元素,并把内容显示出来

#循环语句
#for语句
for( i in 1:10) print(i) #js
for( j in 1:10) print(1:j)

#while语句
i<-1;
while(i<10){
print(i)
i=i+1
}

#repeat语句 #loop
repeat{
i=i-1
print(i)
if(i<0)break;#跳出循环的条件
}

#自定义函数
#myfunction <- function(arg1, arg2, ... ){
#statements
#return(object)
#}

#函数体通常包含三部分:
#1异常处理
#2内部处理过程
#3返回值

#例子1 随机数产生,画图
#rnorm(n,mean,sd)n:随机数个数mean:期望 sd:方差

function11 <- function(){
x <- rnorm(100)
y <- rnorm(100,2,3)
plot(x,y)
return(x+y)
}
function11()

#有两个参数
function12 <- function(x,y){
plot(x,y)
return(x+y)
}
x <- rnorm(100)
y <- rnorm(100,2,3)
function12(x,y)

#例子2 计算标准差

myfunc2<-function(x) {
#异常处理
if(!is.numeric(x)){
stop("输入的值不是数值型\n")
}
if(length(x)==1){
stop("请输入个数大于一位的向量\n")
}
result<-sqrt(sum((x-mean(x))^2)/(length(x)-1))
return(result)
}

myfunc2(c('a','b'));

### 后续 debug(myfunc2);

#基本绘图技巧
#绘制图
x<-1:100
y<-100+x*5
plot(y)
plot(y,type='l')

#绘制一千个正态分布随机数的频率直方图
x<-rnorm(1000,30,10)
hist(x)

#使用核密度估计函数density(),在直方图上绘制密度曲线
#hist()函数必须设置freq参数为F才能显示密度曲线

x<-rnorm(1000,30,10)
hist(x,freq=F) # F 是 FALSE 的简称 区分大小写
lines(density(x),col='red')
box() #加一个方框

# 茎叶图很直观的表现出数据的分布情况
x <- rnorm(100,5,1)
stem(x)

# 绘制10个正态分布随机数的条形图
x <- rnorm(10,30,10);barplot(x)
box() # 在当前图上加个方框

# 绘制饼图
x <-1:5;pie(x,col=rainbow(5))
box()

# 绘制箱线图
# 中间黑线为中位数位置;上下框线为上下四分位数位置;上下触须为1.5倍四分位数间距;如果有孤立点表示异常值
x <-rnorm(10,10,3);boxplot(x)

# 根据指定函数绘制指定范围的曲线图
curve(sin, -2*pi, 2*pi, xname = "t")

#金融数据获取
#从雅虎金融等数据网站获取:各国股票、股指、债券、ETF基金、汇率、金属、期权等交易品种历史数据和上市公司年报数据

# 不设置来源则默认从雅虎金融下载;
# 雅虎金融上大量指数品种都以"^"开头
# from,to参数设置读取历史数据的时间段

library(quantmod)
getSymbols('^GSPC',src='yahoo',from='2000-1-1',to=Sys.Date());

print(head(GSPC))
print(tail(GSPC))

getSymbols('AAPL',src='yahoo',from='2000-1-1',to=Sys.Date());
print(head(AAPL))
print(tail(AAPL))

getSymbols('CFTLF',src='yahoo',from='2000-1-1',to=Sys.Date());
print(head(CFTLF))
print(tail(CFTLF))

#晚总结

#r语言(二)笔记的更多相关文章

  1. R语言学习笔记(二)

    今天主要学习了两个统计学的基本概念:峰度和偏度,并且用R语言来描述. > vars<-c("mpg","hp","wt") &g ...

  2. R语言学习笔记(二十一五):如何如何提升R语言运算的性能以及速度

    在R中获得快速运行代码的方法 使用向量化运算 R语言的并行计算可以用parallel和foreach包 加快R运行速度还可以使用cmpfun()函数即字节码编译器 再者就是在R中调用C或C++ 同时还 ...

  3. R语言学习笔记之: 论如何正确把EXCEL文件喂给R处理

    博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html ---- 前言: 应用背景兼吐槽 继续延续之前每个月至少一次更新博客,归纳总结学习心得好习惯. ...

  4. R语言学习笔记(一)

    1.不同的行业对数据集(即表格)的行和列称谓不同,统计学家称其为观测(observation)和变量(variable): 2.R语言存储数据的结构: ①向量:类似于C语言里的一位数组,执行组合功能的 ...

  5. R语言学习笔记

    向量化的函数 向量化的函数 ifelse/which/where/any/all/cumsum/cumprod/对于矩阵而言,可以使用rowSums/colSums.对于“穷举所有组合问题" ...

  6. R语言学习笔记:分析学生的考试成绩

    孩子上初中时拿到过全年级一次考试所有科目的考试成绩表,正好可以用于R语言的统计分析学习.为了不泄漏孩子的姓名,就用学号代替了,感兴趣可以下载测试数据进行练习. num class chn math e ...

  7. R语言学习笔记:日期处理

    1.取出当前日期 Sys.Date() [1] "2014-10-29" date()  #注意:这种方法返回的是字符串类型 [1] "Wed Oct 29 20:36: ...

  8. R语言学习笔记︱Echarts与R的可视化包——地区地图

    笔者寄语:感谢CDA DSC训练营周末上完课,常老师.曾柯老师加了小课,讲了echart与R结合的函数包recharts的一些基本用法.通过对比谢益辉老师GitHub的说明文档,曾柯老师极大地简化了一 ...

  9. R语言学习笔记:基础知识

    1.数据分析金字塔 2.[文件]-[改变工作目录] 3.[程序包]-[设定CRAN镜像] [程序包]-[安装程序包] 4.向量 c() 例:x=c(2,5,8,3,5,9) 例:x=c(1:100) ...

  10. R语言学习笔记:sort、rank、order、arrange排序函数

    R语言中排序有几个基本函数:sort().rank().order().arrange() 一.总结 sort()函数是对向量进行从小到大的排序 rank()函数返回的是对向量中每个数值对应的秩 or ...

随机推荐

  1. [TimLinux] 命令 procps-ng 包内命令介绍

    1. procps-ng包 System and process monitoring utilities. 2. 文件列表 free, pgrep, pkill, pmap, ps, pwdx, s ...

  2. 图形界面GUI

    JFrame jframe = new JFrame(); //创建一个窗口 jframe.setVisible(true) //设置窗口显示 jframe.setLocation() //设置窗口位 ...

  3. BZOJ1001: [BeiJing2006]狼抓兔子(优化的dinic或转化对偶图求最短路)

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 30078  Solved: 7908[Submit][ ...

  4. 将项目部署到github的方法

    GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub. GitHub于2008年4月10日正式上线,除了Git代码仓库托管及基本的 We ...

  5. Django 2.0.7 使用小知识

    Django 2.0.3 使用小知识 运行环境: Python 3.6.4 Django 2.0.7 Django Admin中model显示为中文 定义model时,定义一个Meta对象,设置需要显 ...

  6. Orleans的深入

    1.序列化  序列化配置有几个坑这里我写出来 2.负载均衡 3.定时器与提醒 4.服务启动执行代码 5.监控 序列化 新建实体类 引用的包 Microsoft.Orleans.Core V2.12 M ...

  7. 《java面试十八式》--引子

    爪哇城中   “喂,你等等我啊”少女气喘吁吁的喊道   “大小姐,你可快点吧,报名马上就要结束了.”   这是爪哇城一年一度的大选比赛,被选上的人会留下来任职,享有名誉和金钱,所以大家都在积极准备. ...

  8. SpringAOP在web应用中的使用

    之前的aop是通过手动创建代理类来进行通知的,但是在日常开发中,我们并不愿意在代码中硬编码这些代理类,我们更愿意使用DI和IOC来管理aop代理类.Spring为我们提供了以下方式来使用aop框架 一 ...

  9. mybatis第一篇

    1.mybatis介绍 1.介绍 ​ MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google co ...

  10. python学习-list

    # 数据类型之 列表 有顺序.# 关键字:list# 语法 :[] 数据之间用,隔开.列表当中的数据,可以是任意类型.数值是可以重复的.a = []b = ["魔王", " ...