zoukankan      html  css  js  c++  java
  • R基础学习

    R基础学习

    The Art of R Programming

    1.seq
    产生等差数列:seq(from,to,by) seq(from,to,length)
    for(i in 1:length(x)) 当x为null时 i会依次取 1,0
    for(i in seq(x)) 能避免x为null时产生错误。 seq(x) 会产生 1:length(x)的向量

    2.rep
    rep(x,n) x整体重复n次
    rep(x,each=m) x的每个元素依次重复m次
    rep(x,y) x中每个元素按照对于的y的元素重复 向量x与y的长度必须相等。

    3.想要读写向量中的元素,必须对向量提前声明。因为R是函数式语言,读写都是通过函数来实现的,如果R事先不知道x是一向量,那么函数将没有执行的对象。

    4.可以预先给向量分配内存空间,避免每次使用时重新分配,减慢代码运行速度。
    for(i in seq(x)) r<-c(r,i) 每次调用都会给新的向量r分配内存
    r<-vector(length=n) for(i in seq(x)) r[i]<-i 事先给r分配一个合适的内存大小,每次调用时就不用重新分配内存

    5.cumsum(x) 计算向量x的累计和 结果向量的第i个元素是x的前i个元素的和。 cumulative sums

    6. round(x) 四舍五入函数
    floor(x) 向下取整

    7.NA 存在但未知的值 na.rm=T 移除NA 未移除NA时,NA 作为存在的数,计算时会被计算在内。
    NULL 不存在的值 R遇到NULL会主动跳过。

    8.subset

    9.which(x>2) 返回向量或矩阵x中符合条件的元素的索引,x如果是矩阵,则返回的是将x看成向量时符合条件的元素的位置。
    which(x==2,arr.ind=T) 当x为矩阵时,返回的是符合条件的元素的行号和列号。

    10.ifelse(a,x,y) a[i]为真时返回x[i],否则返回y[i]。x,y不够长时,自动补齐。

    11.当对逻辑值T和F进行运算时,把T当做1,F当做0进行运算。

    12.diff(x,k) 差分 错k位相减 :x[i+k]-x[i]

    13.符号函数sign y<- sign(x) x的第i个元素为正,y[i]=1; x的第i个元素为负,y[i]=-1;x的第i个元素为0,y[i]=0

    14. x<-1:4 产生的是整数;y<-c(1,2,3,4) 产生的是浮点数。 identical(x,y) FALSE identical用于判断两个对象是否完全相同(包括数据类型)
    y<-c(1:4)产生的是整数

    15.rbind(a,b) 将a,b按照行组合形成矩阵
    cbind(a,b) 将a,b按照列组合形成矩阵
    避免在循环中重复创建矩阵,每次进行矩阵内存分配将降低程序速度;应该一开始就定义一个大矩阵,在循环过程中逐行或逐列的进行赋值。

    16.dim(x) x的维数 nrow(x)x的行数 ncol(x)x的列数

    17.从矩阵中单独的取出一列或者一行时,结果的数据类型会变成向量。 a<-x[,3] a的类型为向量
    为避免矩阵降维变成向量 a<-x[,3,drop=F] 强制转化成矩阵 as.matrix(x)
    从数据框中取出一列时也会变成向量,取一行(元素数据类型不同时)会变成列表 a<-x[,3,drop=F]

    18.a为一列表
    a[2] 返回第二个组件,类型为列表 , a[1:4] 返回第1至第4个组件
    a[[2]] 返回第二个组件,类型为第二个组件自身的类型 [[ ]] 每次只能取出一个组件

    19. 删除列表组件时直接将其赋值为NULL
    c(list1,list2,list3) 列表拼接
    lenght(list4) 返回列表list4的组件个数

    20.数据框会将字符向量默认为因子类型
    a<-data.frame(name,age,stringsAsFactors=F)

    21.merge(x,y,by.x='name',by.y='names')
    合并数据库x,y,只有两个匹配列中完全相同的才会被显示。 by.x与by.y用于标示两个数据框中含有相同信息但是名称不同的两个匹配列。

    22.substr(x,a,b) 截取x的第a位至第b位,结果为字符串。

    23.split(x,f)
    x为向量或者数据框,f为因子或者因子的列表。按照因子向量f对x进行分组,返回结果为列表。

    24. by(x,factor,f)
    类似于tapply ,但是此处x可以为矩阵或者数据框,f为需要多列数据的函数(如拟合)

    25.table(x) x为因子向量或因子列表,统计各因子出现的次数

    26.order(x) 对向量x进行排序,返回的是各元素在排序后的下标

    27.cut(x,a) 按照x落在a是哪个区间上对x进行分类,生成因子。

    28.next 结束当前的运行的一次循环(i=k),next后的语句不会执行;直接进入下一次循环(i=k+1)
    break 直接跳出当前运行的这个循环体。

    29.R不支持对非向量集合的循环
    get('name') 接受一个代表对象名字的字符串参数,然后返回该对象的内容
    将对象的名字组成向量用于for语句,在循环体内用get函数将由for语句中得到的对象名字转化为对象内容。
    for(i in c('a','b','c') ) {
    z<-get(i)
    print( lm( z[,2]~z[,1] ) ) }

    30. &,| 向量的逻辑运算,两个向量需要等长, 结果为一向量
    &&,|| 标量的逻辑运算 当两个运算对象是向量时,只进行两个向量的第一个元素的逻辑预算作为结果

  • 相关阅读:
    Python标准库 -- UUID模块(生成唯一标识)
    Python全局解释器锁 -- GIL
    Python Web Server Gateway Interface -- WSGI
    Mysql 和 Postgresql 抛开性能的对比
    一篇文章掌握RequireJS常用知识
    彻底理解js中的闭包
    全面理解Javascript闭包和闭包的几种写法及用途【转】
    JS 日期转换,格式化等常用的函数定义
    把上传过来的多张图片拼接转为PDF的实现代码
    C# Stream 和 byte[] 之间的转换(文件流的应用)
  • 原文地址:https://www.cnblogs.com/runner-ljt/p/4556223.html
Copyright © 2011-2022 走看看