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_1; …; expr_m}
, in which case the value of the group is the result of the last expression in the group evaluated
name
in
expr_1
)
expr_2
cube <- function(n) { sq <- function() n*n n*sq() }
R函数内的变量可以分为三类
1. 参数:和C相仿
2. 局部变量:和C相仿
3. free变量:R函数内部可以访问函数外的量,这些定义在函数之外的量称为free变量, 一旦对free变量赋值,则其转换成局部变量,但符合<<-有
特殊作用,遇到这个操作符,R会逐层回溯,查找是否有被赋值的变量,如果有则修改这个量的值,即可以穿透函数作用域赋值,如果搜索到全局
作用域依然没找到这个变量,则创建一个, 此时新创建的量成为一个全局变量
"%!%" <- function(X, y) { … }
24. <<-和assign()
这两个操作似乎可以超出function的作用域,使函数内的修改影响到函数外的量,但是似乎有些细节是不同的,慎用
25 R环境的配置
R的安装目录下有一个文件Rprofile.site,这是默认的全局配置文件,或者可以定义一个环境变量R_PROFILE,覆盖全局配置文件的配置。另外对每一个
目录可以生成.Rprofile文件,针对这个目录做配置。
配置文件或.RData中的.First()和.Last()函数负责具体配置工作