基本语法
赋值
a<-2 将2赋给a, 也可以是 2->a, 也可以是assign("x",3)
基本运算符
+, -, *, /, ^
基本函数
log, exp, sin, cos, tan, sqrt等
其他
逻辑符号位 TRUE和FALSE
NaN非数字
向量
产生
x <- c(10.4, 5.6, 3.1, 6.4, 21.7)
1:n 产生[1,n]的向量.
seq是最常用的方式,它的原型是seq(from, to, by=1, length, along) by为步长,默认是1.
rep(x, times=2) 将x重复两次产生新的向量, rep(x,each=2) 将x的每个分量重复2次产生新的向量.
不同维数的向量一起运算,则短的循环使用.
向量函数
max和min给出向量的最大值和最小值
range给出长度为2的向量,即c(min(x), max(x))
length给出向量的维数
sum求和
prod求积
mean均值
var方差
sort返回升序向量
字符向量
可以用单引号活双引号
paste(c("X","Y"), 1:10, sep="") 结果为"X1", "Y2", "X3", "Y4", "X5", "Y6", "X7", "Y8", "X9", "Y10"
索引向量
x[1:10] 取x的前10个分量.
x[-(1:5)] 排除指定元素.
c("x","y")[rep(c(1,2,2,1), times=4)] 三生一个长度为16,由 "x", "y", "y", "x" 重复4次而构成的向量.
对象
R的对象类型包括数值型, 复数型, 逻辑型, 字符型, 原味型.
可以通过class()查看类型.
类型间转换
x <- 0:9 x为数值型
d <- as.character(x) d为字符向量c("0", "1",...,"9")
as.interger(d) 转换为数值型.
attr(z, "dim") <- c(10,10) 设置z的属性为10*10的矩阵.
矩阵
函数crossprod实现两个向量的矢积,对于两个向量来说,crossprod(x,y)得到一个矩阵.
diag函数,传入的参数为向量时,得到矩阵;传入参数为矩阵时,得到向量.
逆
a^{-1}
解方程
solve(a,b)
特征值
ev <- eigen(Sm)得到Sm的特征值和特征向量.ev$val和ev$vec分别表示二者.
ev <- eigen(Sm)$values,只计算特征向量.
其它数据类型
列表
是一种泛化的向量, 它不要求所有的元素是同一种类型.
因子
数据框
和矩阵类似, 列可以是不同的数据类型.
数组
Z <- array(h, dim=c(3,4,2)) 用 h 在 Z 中创建一个 3 × 4 × 2 的数组
外积
将是这样的一个数组: 维度向量通过连接两个操作数的 维度向量(顺序非常的重要)得到;数据向量则由 a 的数据向量元素和 b 的数据向量元素的所有可能乘积得到.
操作符是%o%, 也可以是outer(a,b,"*")
转置
函数 aperm(a, perm) 可以用来重排一个数组 a. 参数 perm 可以是 {1, ..., k}的一个排列, 其中 k 是 a 的下标数目. 这个函数将产生 一个和a大小一致的数组, 不过旧的维度 perm[j]将会变成第j个维度.
例如aperm(a, c(2,1))实现了矩阵a的转置.
未完待续