• #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("输入的值不是数值型 ")
    }
    if(length(x)==1){
    stop("请输入个数大于一位的向量 ")
    }
    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))


    #晚总结

  • 相关阅读:
    Logger.getLogger与LogFactory.getLog
    log4j详解
    游戏史上80重要创新(原资料来自17173)
    软件开发工具介绍之 6.Web开发工具
    JAVA NIO 简介
    Alan Kay 你需要认识的一个天才
    大学计算机学习路线
    软件开发工具介绍之 5. 计划管理
    软件开发工具介绍之 4. 建模工具
    关于最近“361强奸360强奸QQ”,且是光天化日之下
  • 原文地址:https://www.cnblogs.com/sparky1988/p/8427288.html
Copyright © 2020-2023  润新知