R language

1. 查看object的类型

    class(z)

2.修改维度(向量转矩阵, 矩阵转向量)

    attr(z, "dim") <- c(2,3)

    z被转换成2行3列的矩阵, 假设z原来是6个元素的向量

3. digit和character转换

     d <- as.integer(z)

     z <- as.character(d)

4.factor是R中一类特殊的类型, 它实际是给样本划分类别, 其level就是类别数目, 默认情况下它有点像unqiue(), 可以配合tapply()函数使用,起到mask的作用 

   比如

   z <- c(1,1,2,2)

  zf <- factor(z)

  x <- rnorrm(4) #随机产生四个正态数字

  tapply(x, zf, mean); #计算均值, 前两个数一组, 后两个数一组, 共得到两个均值

  

5. 产生数组,利用array()函数

    x <- array(1:20, dim=c(4,5)) 

    matrix()函数可以快速产生矩阵,并支持默认值

   x <- matrix(3, 2,4) #产生2行4列的矩阵,用3填充

   x <- array(3, c(2,4)) #和上面相同的结果


6. ls()查看工作目录中的量, rm()删除工作目录中的量

    清除命令窗口 rm(list=ls())

    如果数据较多,可以用head()函数查看起始部分的数据


7. 矩阵乘法

   z <- x %*% y

   矩阵转置t(z), 如果z是一个行向量, 想获得对应的列向量, 则需要两次t(), 即t(t(z))

8 =和<-的区别

   大多数情况下是一样的, 但是而这是有细微差异的: =是传值, 而<-是赋值, 后者一般伴随着一个新的量出现, 而前者未必会产生新的量(比如在作为函数的参数时)

  

9. 查看、切换工作目录:getwd()/setwd()


10. 矩阵的逆

     A^{-1}


11. 求解线性方程组

       b = A %*% x

       solve(A, b)


12. 对称阵的特征值和特征向量

      eigen(SM). 结果是一个list, 包括两个values和vectors两个元素


13. 矩阵的读取

       假设x是3x4的矩阵, 则x[2,]获得第二行向量, x[,2]获得第二列向量


14. SVD

       对任意矩阵M, svd函数可以把M分解成3个矩阵的乘法

      M = U %*% D %*% t(V).

     其中U是列线性独立的向量(V也一样), D是一个对角阵, U实际是M的列向量所在空间的坐标系, 而V实际是M的行向量所在

    空间的坐标系


15. (),[]和[[]]

     ()一般用来包括函数的参数列表

     []一般是vector的元素

     [[]]一般是list的元素, 当然list也可以用[]访问, 此时[]相当于matlab中cell的(), 而[[]]相当于matlab的{}

     R中list和vector是不同的概念,但二者都支持$方式的访问


16. dataframe可以看做是支持列为不同属性的特殊矩阵


17. attach()和detach()可以作为$的替代方式,访问object内的元素, 它通过修改搜索路径的次序来实现对元素的访问


18. R内置了一些数据集,可以用data()查看和加载


19.命令集合

    Commands may be grouped together in braces, {expr_1expr_m}, in which case the value of the group is the result of the last expression in the group evaluated


20 if statement 
      if ( expr_1 ) expr_2 else expr_3
    &&和||适用于长度为1的vector
    &和|适用于长度大于1的vector, 对每一个元素都操作

21 for statement
      for ( name in expr_1 ) expr_2
     似乎在R中,for语句的效率并不高
     break/next可以在循环语句中使用, next相当于matlab的continue语句

22. 定义函数的方法
       name <- function( arg_1 , arg_2 , …) expression
      其中的expression一般是命令集合,集合中最后一句的输出就是函数的返回值

     调用方式 有两种
   name(expr_1expr_2, …) #用位置来区分参数
   name(arg_1 = expr_1, arg_2 = expr_2) #用名字来区分参数,此时位置可以和定义不一致
  
  函数内还是可以定义新函数的,比如
  cube <- function(n) {
    sq <- function() n*n
    n*sq()
  }
 
  
  R函数内的变量可以分为三类
  1. 参数:和C相仿
  2. 局部变量:和C相仿
  3. free变量:R函数内部可以访问函数外的量,这些定义在函数之外的量称为free变量, 一旦对free变量赋值,则其转换成局部变量,但符合<<-有
     特殊作用,遇到这个操作符,R会逐层回溯,查找是否有被赋值的变量,如果有则修改这个量的值,即可以穿透函数作用域赋值,如果搜索到全局
     作用域依然没找到这个变量,则创建一个, 此时新创建的量成为一个全局变量 

  另外R的函数支持参数默认值

23.类似C++的运算符重载
    
"%!%" <- function(X, y) { … }
 
  
24. <<-和assign()
  这两个操作似乎可以超出function的作用域,使函数内的修改影响到函数外的量,但是似乎有些细节是不同的,慎用
 
  
25 R环境的配置
   R的安装目录下有一个文件Rprofile.site,这是默认的全局配置文件,或者可以定义一个环境变量R_PROFILE,覆盖全局配置文件的配置。另外对每一个
  目录可以生成.Rprofile文件,针对这个目录做配置。
  配置文件或.RData中的.First()和.Last()函数负责具体配置工作
 
  
 
 


26. 函数对class的支持(似乎是一个函数对不同class的object有不同的行为)
    methods(coef )可以查看函数coef支持的所有class, 进一步可以用 getAnywhere("coef.aov")查看具体的函数实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值