#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. Tomcat下载安装并部署到IDEA(附带idea两种热部署设置方法)

    目录 Tomcat下载教程 Tomcat安装教程 Tomcat热部署到IDEA idea两种热部署设置方法 使用Idea的时候,修改了代码,需要反复的重启Tomcat,查看效果,是不是贼烦?还记得刚上 ...

  2. Docker系列之MySQL安装教程

    Docker系列之MySQL安装教程 有了前面的基础教程Docker系列之常用命令操作手册之后,本博客记录一篇mysql的安装教程 mysql镜像查询命令 docker search mysql 几个 ...

  3. 洛谷 题解 P1025 【数的划分】

    将n个小球放到k个盒子中的情况总数 = (a)至少有一个盒子只有一个小球的情况数 + (b)没有一个盒子只有一个小球的情况数 这样写出表达式: a.因为盒子不加区分,那么=情况数与"将n-1 ...

  4. 洛谷 题解 P1600 【天天爱跑步】 (NOIP2016)

    必须得说,这是一道难题(尤其对于我这样普及组205分的蒟蒻) 提交结果(NOIP2016 天天爱跑步): OJ名 编号 题目 状态 分数 总时间 内存 代码 / 答案文件 提交者 提交时间 Libre ...

  5. flash存储器原理及作用是什么?

    flash存储器的工作原理 flash存储器又称闪存(快闪存储器),是一种电可擦可编程只读存储器的形式,是可以在操作中被多次擦或写,EEPROM与高速RAM成为当前最常用且发展最快的两种存储技术.计算 ...

  6. linux—chmod

    chmod -options -c 只输出被改变的文件信息      -f , --silent, --quite   当chmod不能改变文件模式时,不通知用户      -R   递归       ...

  7. 【Git】405- 分享:大牛总结的 Git 使用技巧

    作者:你喜欢吃青椒么 来源:juejin.im/post/5d157bf3f265da1bcc1954e6 前言 本文是参考廖雪峰老师的Git资料再加上我自己对Git的理解,记录我的Git学习历程,作 ...

  8. 【H5】344- 微信 H5 页面兼容性解决方案

    点击上方"前端自习课"关注,学习起来~ 最近给公司微信公众号,写了微信h5业务页面,总结分享一下前端开发过程中的几个兼容性坑,项目直接拿的公司页面,所以下文涉及图片都模糊处理了. ...

  9. 二、Vue 页面渲染过程

    前言 上篇博文我们依葫芦画瓢已经将hello world 展现在界面上啦,但是是不是感觉新虚虚的,总觉得这么多文件,项目怎么就启动起来了呢?怎么访问到8080 端口就能进入到我们的首页呢.整个的流程是 ...

  10. 12个超好用的IntelliJ IDEA 插件!你用过几个?

    一.前言 IntelliJ IDEA 如果说IntelliJ IDEA是一款现代化智能开发工具的话,Eclipse则称得上是石器时代的东西了. 其实笔者也是一枚从Eclipse转IDEA的探索者,随着 ...