#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. Spring Cloud第六篇 | Hystrix仪表盘监控Hystrix Dashboard

    本文是Spring Cloud专栏的第六篇文章,了解前五篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring Cloud ...

  2. 2.4G芯片SI24R1可替代NRF24L01P

    随着美金和原厂对价格的调控,NRF24L01P的价格越来越高,对终端制造的客户造成了不少的压力成本,但很多人又不原意花费更多的人力物力去重新改版. 小编今天就着重给大家介绍一款芯片,可以在不改板的情况 ...

  3. iPhone唯一标识符

    为了区分iPhone设备,就要用到iPhone的唯一标识符唯一标识符包括:UDID(唯一设备标识符).identifierForVendor(供应商标识符).advertisingIdentifier ...

  4. 当用python读取几十万行文本时,会出现什么状况?

      前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:accumulate_zhang    我在使用python读取几十 ...

  5. 【JS】380- JavaScript 正则新特性

    概括 如果你曾用 JavaScript 进行过复杂的文本处理操作,那么你将会喜欢 ES2018 中引入的新特性.本文将详细介绍第9版标准如何提高 JavaScript 的文本处理能力. 大多数编程语言 ...

  6. UWP 应用启动速度优化——关闭加载动画

    准备 在开始之前,我们应该先处理好预启动来加速启动应用.请参见文末链接. 步骤 关闭加载动画主要在包清单文件中进行. 首先,以代码方式打开 Package.appxmanifest,在顶部的 Pack ...

  7. HPS端如何通过AXI Bridge控制FPGA端口的GPIO

    该笔记主要记录HPS端如何通过AXI Bridge控制FPGA端口的GPIO,主要是如何操作FPGA侧的Led 1.AXI Bridge         AXIB主要包括H2FB.F2HB.LWH2F ...

  8. ELK输出nginx的日志(未完成)

    我们先准备3台centos7服务器 171 做 elasticsearch,kibana的操作 172 做logstash 的操作 173 做nginx 的操作 软件 版本号 elasticsearc ...

  9. 深入探索Java设计模式之构建器模式(五)

    抽丝剥茧 细说架构那些事——[优锐课] 简单的程序不需要大量的设计过程,因为它们只关注有限的解决方案,仅使用几个类.大型程序专注于广泛的设计,该设计比好的设计范例的任何其他属性都更能利用可重用性.宏伟 ...

  10. ubuntu19_nginx_uwsgi_flask_apt安装

    ubuntu19_nginx_uwsgi_flask_apt安装 转载注明来源: 本文链接 来自osnosn的博客,写于 2019-12-21. 在 ubuntu 19.04 apt 安装 apt i ...