• Learning R笔记(一)


    基本操作

    • 帮助文档:?函数。演示:demo(函数)。参数列表:formals(函数),返回为成对列表pairlist。
    • 用all.equal函数检查浮点数是否相等,容忍度默认为1.5e-8,如果相等返回TRUE,不相等返回差值。将其嵌入isTRUE函数则返回TRUE或者FALSE
    • 使用<<-对全局变量赋值,或者使用assign函数,参数:“变量名”,值,如果全局赋值加上globalenv()参数。assign函数高级用法,需少用。
    • 一般直接输入变量名就会输出结果,是为隐式调用print函数,从linux终端运行等需要加上print函数。
    • 特殊数字:Inf,-Inf,NaN,NA。NaN(not a number),NA(not available)代表缺失值。is.finite函数检查特殊数字,正常数字返回TRUE,is.infinite函数相反。is.nan函数检查NaN,is.na函数检查NA,NaN。
    • 三种逻辑:TRUE,FALSE,NA。any和all函数检查逻辑向量
    • NULL是个特殊值,表示空的变量。NULL没有长度,用is.null来测试,把某个元素设置为NULL为删除,它因此采用list(NULL)来设置。
    • head函数可显示前几行(默认为6行),head('',n)显示前n行。
    • 工作目录:查看getwd(),更改setwd("path")。绝对路径的书写用/书写,windows下可以用\,为了在各个系统下保持一致,尽量用/间隔
    • 清除工作区的变量
    #清除所有变量
    rm(list=ls())
    
    #清除单个变量
    rm(data)
    
    #清除多个变量
    rm(list=c('data1','data2'))
    • str函数能显示对象的结构,对数据框和嵌套列表很有用
    > str(a)
    'data.frame':	13 obs. of  3 variables:
     $ class: Factor w/ 7 levels "浜岀彮","涓夌彮",..: 7 6 5 4 3 1 1 1 1 2 ...
     $ name : Factor w/ 10 levels "","122","闄堜附鐏xb5,115",..: 1 2 1 1 2 8 7 6 5 4 ...
     $ score: int  NA NA NA NA NA 119 96 NA NA NA ...
    • attributes函数能显示当前对象的所有属性列表
    > attributes(a)
    $names
    [1] "class" "name"  "score"
    
    $class
    [1] "data.frame"
    
    $row.names
     [1]  1  2  3  4  5  6  7  8  9 10 11 12 13

     


    生成数据

    • vector函数构建一个指定类型和长度的矢量,结果可以为0,FALSE,空字符串
    > vector('numeric',5)#numeric(5)
    [1] 0 0 0 0 0
    > vector('logical',5)#logical(5)
    [1] FALSE FALSE FALSE FALSE FALSE
    > vector('character',5)#character(5)
    [1] "" "" "" "" ""
    > vector('list',2)
    [[1]]
    NULL
    
    [[2]]
    NULL
    • summary数据汇总:最小值,1/4值,中指,3/4值,最大值。对数据框使用summary函数,相当于对每一列使用summary函数。
    • letters包含a到z的小写值,LETTERS对应大写字母。
    > letters[4]
    [1] "d"
    > letters[1:4]
    [1] "a" "b" "c" "d"
    > letters[]
     [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l"
    [13] "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x"
    [25] "y" "z"
    •  month.name包含月份的名字,month.abb是月份的缩写。同letters用法一样
    • 常用随机数函数:runif均匀分布,rnorm正态分布  
    #runif(n,min,max),默认产生0-1之间的随机数
    > runif(3)
    [1] 0.3308360 0.5573855 0.9720616
    > runif(3,min=1,max=9)
    [1] 8.946071 4.915268 5.763918
    #rnom可指定参数mean:平均数,sd:标准差,默认mean=0,sd=1
    > rnorm(5)
    [1] 0.55080064 -0.24792330 -0.09480838 0.65215600
    [5] -0.96422061
    > rnorm(5,mean=2,sd=0.3)
    [1] 2.373522 2.176204 1.948216 2.371155 2.070872
    • sample函数为数据抽样,三个参数:数据,抽取个数,replace(TRUE是有放回的抽取,FALSE相反)
    • seq函数产生序列:seq.int函数、seq_len函数、seq_along函数
    #seq.int创建一个序列,与冒号有所不同,指定步长时也不一样
    > 2:8
    [1] 2 3 4 5 6 7 8
    > seq.int(2:8)
    [1] 1 2 3 4 5 6 7
    > seq.int(4,10,3)#指定步长3
    [1]  4  7 10
    #seq_len函数创建一个从1到它的输入值的序列,输入为0时创建一个空值
    > seq_len(0)
    integer(0)
    > attributes(seq_len(0))
    NULL
    #seq_along创建一个从1开始、长度为其输入值的序列
    > seq_along(letters[1:10])
     [1]  1  2  3  4  5  6  7  8  9 10
    • rep函数:重复使用元素创建矢量
    #整体重复三遍
    > rep(1:5,3)
     [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
    #每个元素重复三遍
    > rep(1:5,each=3)
     [1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5
    #每个元素重复个数:1:5
    > rep(1:5,times=1:5)
     [1] 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5
    #重复矢量直到达到15的长度
    > rep(1:5,length.out=15)
     [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
    • 生成矩阵和数组array和matrix函数
    #array创建数组,另个参数:值,维度dim
    > array(1:12,dim=c(3,4))
         [,1] [,2] [,3] [,4]
    [1,]    1    4    7   10
    [2,]    2    5    8   11
    [3,]    3    6    9   12
    #matrix创建矩阵,需要指定行数或者列数,默认输入的值按照列填充,或者指定参数byrow=TRUE按行填充
    > matrix(1:12,nrow=3)
         [,1] [,2] [,3] [,4]
    [1,]    1    4    7   10
    [2,]    2    5    8   11
    [3,]    3    6    9   12
    > matrix(1:12,nrow=3,byrow=TRUE)
         [,1] [,2] [,3] [,4]
    [1,]    1    2    3    4
    [2,]    5    6    7    8
    [3,]    9   10   11   12
    

      


     向量,矩阵和数组

    1.length函数

    > length(1:5)
    [1] 5
    #缺失值NA也被计入长度
    > length(c(TRUE,FALSE,NA))
    [1] 3
    #返回字符串的数目
    > length(c('A','B','C'))
    [1] 3
    #若想返回每个字符串中字符的长度用nchar
    > nchar(c('Axc','Bcdsfs','Cdsss'))
    [1] 3 6 5
    

     若用于矩阵和数组则返回所有维度的乘积

    2.命名name

    可以在创建数据时指定名称,也可以在事后命名。

    #kiwi fruit用引号括起来了,因为其名称无效:有空格
    #可以忽略其他元素命名
    > c(apple=1,"kiwi fruit"=2,3)
         apple kiwi fruit            
             1          2          3 
    > x <- 1:3
    > names(x) <- c("apple","kiwi fruit",'')
    > x
         apple kiwi fruit            
             1          2          3 
    #names函数返回名称,若没有一个元素有名字则返回NULL
    > names(x)
    [1] "apple"      "kiwi fruit" ""   
    > names(1:4)
    NULL
    #创建数组时命名,矩阵同样
    > x <- array(1:6,dim=c(2,3),dimnames=list(c("one","tow"),c("ein","zwei","drei")))
    > x
    ein zwei drei
    one 1 3 5
    tow 2 4 6
    
    #rownames、colnames和dimnames函数
    > rownames(x)
    [1] "one" "tow"
    > colnames(x)
    [1] "ein" "zwei" "drei"
    > dimnames(x)
    [[1]]
    [1] "one" "tow"
    
    [[2]]
    [1] "ein" "zwei" "drei"

    3.行、列和维度

    dim函数对于数组和矩阵返回所有维度。nrow和ncol函数分别返回行和列。norm、ncol和dim用于向量时返回NULL。NROW和NCOL函数把向量看做列向量

     4.合并矩阵

    c函数拼接矩阵把他们转换成向量,cbind和rbind分别按col列和row行合并矩阵

    > x <- matrix(1:12,nrow=3);x
         [,1] [,2] [,3] [,4]
    [1,]    1    4    7   10
    [2,]    2    5    8   11
    [3,]    3    6    9   12
    > y <- matrix(13:24,nrow=3);y
         [,1] [,2] [,3] [,4]
    [1,]   13   16   19   22
    [2,]   14   17   20   23
    [3,]   15   18   21   24
    > c(x,y)
     [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16
    [17] 17 18 19 20 21 22 23 24
    > cbind(x,y)
         [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
    [1,]    1    4    7   10   13   16   19   22
    [2,]    2    5    8   11   14   17   20   23
    [3,]    3    6    9   12   15   18   21   24
    > rbind(x,y)
         [,1] [,2] [,3] [,4]
    [1,]    1    4    7   10
    [2,]    2    5    8   11
    [3,]    3    6    9   12
    [4,]   13   16   19   22
    [5,]   14   17   20   23
    [6,]   15   18   21   24

    5.数学运算

    除法/,转置t函数,点乘%*%和外乘%o%。solve矩阵求反

    向量内乘
    > 1:3%*%2:4
         [,1]
    [1,]   20
    #向量外乘
    > 1:3%o%2:4
         [,1] [,2] [,3]
    [1,]    2    3    4
    [2,]    4    6    8
    [3,]    6    9   12
    > x<-matrix(1:6,nrow=2);x
         [,1] [,2] [,3]
    [1,]    1    3    5
    [2,]    2    4    6
    > y<-matrix(1:6,nrow=3);y
         [,1] [,2]
    [1,]    1    4
    [2,]    2    5
    [3,]    3    6
    #矩阵相乘
    > x%*%y
         [,1] [,2]
    [1,]   22   49
    [2,]   28   64
    > x<-matrix(runif(9),nrow=3);x
              [,1]       [,2]      [,3]
    [1,] 0.6136448 0.05304645 0.7378249
    [2,] 0.1922476 0.18177634 0.9545918
    [3,] 0.9050422 0.65400112 0.2954112
    #矩阵求逆
    > solve(x)
               [,1]      [,2]       [,3]
    [1,]  1.6984882 -1.389698  0.2484943
    [2,] -2.4026083  1.448092  1.3214365
    [3,]  0.1154494  1.051693 -0.3016769
    #矩阵转置
    > t(x)
               [,1]      [,2]       [,3]
    [1,] 0.98387863 0.6292973 0.03753178
    [2,] 0.09061386 0.5971163 0.10537436
    [3,] 0.80727162 0.5403768 0.55767250
    

      

  • 相关阅读:
    ADO.NET初学习
    phpstorm+xdeubg debugging 9000 is busy 提示端口不可以的处理办法
    mysql 乐观锁和悲观锁
    Laravel Facade 调用流程源码分析
    利用 反射ReflectionClass来查看里面的属性和方法
    PHP ArrayAccess 接口简单实例
    laravel service provider 简单实例
    从github 下载下来的PHP项目代码本地需要怎么部署
    PHP Closure 类的bind简介和使用
    PHP $this,self,static 的区别
  • 原文地址:https://www.cnblogs.com/zhangduo/p/4537168.html
Copyright © 2020-2023  润新知