#r语言(二)笔记
#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语言(二)笔记的更多相关文章
- R语言学习笔记(二)
今天主要学习了两个统计学的基本概念:峰度和偏度,并且用R语言来描述. > vars<-c("mpg","hp","wt") &g ...
- R语言学习笔记(二十一五):如何如何提升R语言运算的性能以及速度
在R中获得快速运行代码的方法 使用向量化运算 R语言的并行计算可以用parallel和foreach包 加快R运行速度还可以使用cmpfun()函数即字节码编译器 再者就是在R中调用C或C++ 同时还 ...
- R语言学习笔记之: 论如何正确把EXCEL文件喂给R处理
博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html ---- 前言: 应用背景兼吐槽 继续延续之前每个月至少一次更新博客,归纳总结学习心得好习惯. ...
- R语言学习笔记(一)
1.不同的行业对数据集(即表格)的行和列称谓不同,统计学家称其为观测(observation)和变量(variable): 2.R语言存储数据的结构: ①向量:类似于C语言里的一位数组,执行组合功能的 ...
- R语言学习笔记
向量化的函数 向量化的函数 ifelse/which/where/any/all/cumsum/cumprod/对于矩阵而言,可以使用rowSums/colSums.对于“穷举所有组合问题" ...
- R语言学习笔记:分析学生的考试成绩
孩子上初中时拿到过全年级一次考试所有科目的考试成绩表,正好可以用于R语言的统计分析学习.为了不泄漏孩子的姓名,就用学号代替了,感兴趣可以下载测试数据进行练习. num class chn math e ...
- R语言学习笔记:日期处理
1.取出当前日期 Sys.Date() [1] "2014-10-29" date() #注意:这种方法返回的是字符串类型 [1] "Wed Oct 29 20:36: ...
- R语言学习笔记︱Echarts与R的可视化包——地区地图
笔者寄语:感谢CDA DSC训练营周末上完课,常老师.曾柯老师加了小课,讲了echart与R结合的函数包recharts的一些基本用法.通过对比谢益辉老师GitHub的说明文档,曾柯老师极大地简化了一 ...
- R语言学习笔记:基础知识
1.数据分析金字塔 2.[文件]-[改变工作目录] 3.[程序包]-[设定CRAN镜像] [程序包]-[安装程序包] 4.向量 c() 例:x=c(2,5,8,3,5,9) 例:x=c(1:100) ...
- R语言学习笔记:sort、rank、order、arrange排序函数
R语言中排序有几个基本函数:sort().rank().order().arrange() 一.总结 sort()函数是对向量进行从小到大的排序 rank()函数返回的是对向量中每个数值对应的秩 or ...
随机推荐
- ios instancetype与id区别
我们都知道未知类型的的对象可以用id关键字表示,那为什么还会再有一个instancetype呢? instancetype能返回相关联的类型(使那些非关联返回类型的方法返回所在类的类型):而id 返回 ...
- 第四章 JavaScript对象及初始面向对象
创建对象: //方式一 var ower=new Object(); ower.name="长春花"; ower.genera="夹竹挑科 长春花属"; owe ...
- [TimLinux] JavaScript 给表单提前之前进行验证的方法
1. onSubmit事件 这个事件是注册到form表单上的,不是注册在input type="submit"这个input按钮上面的. 2. 注册方式 HTML内部注册:< ...
- nessus安装、msfconsole辅助模块使用(网安全实训第三天)
本期内容:nessus安装.msfconsole辅助模块使用.后渗透攻击 1. nessus安装 2.msfconsole辅助模块使用 3.后渗透攻击 1. nessus安装 (1)下载nessus ...
- VS编译命令
一.前言 由于公司要求项目需要走CI构建平台,抛弃掉之前的人工编译打包方式,所以需要调研一下项目怎么通过命令行编译出产物. 二.准备工作 在构建机器上安装vs(本文示例为vs2017) 将代码上传版本 ...
- 大数据学习笔记——Hadoop高可用完全分布式模式完整部署教程(包含zookeeper)
高可用模式下的Hadoop集群搭建 本篇博客将会在之前写过的Linux的完整部署的基础上进行,暂时不会涉及到伪分布式或者完全分布式模式搭建,由于HA模式涉及到的配置文件较多,维护起来也较为复杂,相信学 ...
- HDFS的架构和设计要点
HDFS的架构和设计要点 转 大数据之路 发布于 2012/10/11 23:00 字数 4487 阅读 495 收藏 1 点赞 0 评论 0 撸了今年阿里.头条和美团的面试,我有一个重要发现.... ...
- 设置td中的值自动换行
style="word-wrap:break-word;word-break:break-all;"注意要设置td的宽度,否则没有用word-wrap:设置或检索当当前行超过指定容 ...
- GoLand不同目录(包)方法调用
新手学go,跨目录调用方法是真的难,弄了好几天,几乎要放弃go了,在此演示一下如何跨目录(包)调用~ 需求是main.go调用model包下mysql.go中Query方法,目录结构如下. 要点: 1 ...
- Linux系统入门简介<1>
linux系统入门简介 我们为什么要学习Linux? 在介绍Linux的历史前,我想先针对大家如何对Linux的发音说一下.我发现我身边的朋友对Linux的发音大致有这么几种: "里那克斯& ...