#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. 前端跨域 nginx 反向代理

    1.下载ngnix稳定版   (http://nginx.org/en/download.html) 2.解压到你中意的目录. 3.将你的网页文件放到刚解压html文件目录下 4.打开conf  &g ...

  2. 洛谷P2569 (BZOJ1855)[SCOI2010]股票交易 【单调队列优化DP】

    Description 最近lxhgww又迷上了投资股票,通过一段时间的观察和学习,他总结出了股票行情的一些规律. 通过一段时间的观察,lxhgww预测到了未来T天内某只股票的走势,第i天的股票买入价 ...

  3. 使用 Ocelot 匹配路由的方法匹配路由

    使用 Ocelot 匹配路由的方法匹配路由 Intro 之前我们在 Ocelot 网关的基础上自定义了一个认证授权的 Ocelot 中间件,根据请求的路径和 Method 进行匹配,找到对应的权限配置 ...

  4. Python3 函数基础1

    目录 定义函数 定义函数的三种形式 空函数 有参函数 无参函数 函数的调用 函数的返回值 函数的参数 形参 (parameter) 实参(argument) 位置形参与位置实参 默认形参 关键字实参 ...

  5. 【React】345- React v16.9 新特性[译]

    今天我们发布了 React 16.9.它包含了一些新特性.bug修复以及新的弃用警告,以便与筹备接下来的主要版本. 一.新弃用 重命名 Unsafe 生命周期方法 一年前,我们宣布 unsafe 生命 ...

  6. 关于java反射里的.class、.getClass()、Class.Forname()

    博主在研究java反射这一章节时,曾被三个方法困扰多时,.class..getClass().Class.Forname(),先上代码 这是类A package cn.yonyong.net.tcp. ...

  7. Java 从入门到进阶之路(十五)

    在之前的文章我们介绍了一下 Java 中的接口,本章我们来看一下 Java 中类的多态. 在日常生活中,很多意思并不是我们想要的意思,如下: 1.领导:“你这是什么意思?” 小明:“没什么意思,意思意 ...

  8. ansible部署Tomcat

    首先要准备的环境就是免密登录 这是要在ansible-playbook中所写的内容---- hosts: tomcat tasks:   - name: 关闭防火墙     service: name ...

  9. ELK 理论小知识

    ELK 是现阶段众多企业单位都在使用的一种日志分析系统,它能够方便的为我们收集你想要的日志并且展示出来 ELK是Elasticsearch.Logstash.Kibana的简称,这三者都是开源软件,通 ...

  10. ajax request 等请求的数据直接return