四、NA、Inf、NaN、NULL 特殊值(https://zhuanlan.zhihu.com/p/47029970)
五、矩阵(https://zhuanlan.zhihu.com/p/47250328)
1. 创建矩阵:matrix()函数,matrix()的原型为:matrix(data=NA, nrow=1, ncol = 1, byrow=FALSE, dimnames=NULL)
data:包含了矩阵的元素,一般是个向量,默认情况下是NA
nrow和ncol:设定矩阵的行、列数目;一般这两个值只需设定一个,另外一个值可根据元素个数自动给出
byrow:设定矩阵是按行(byrow=TRUE)填充还是按 列(byrow=FALSE)填充,默认情况下按列填充
dimnames:包含了以字符型向量表示的行名和列名,是一个列表,默认情况下没有行列名
rownames()、colnames()函数来给矩阵添加行、列名
2、矩阵属性:> class(mat) ##结构类型;> typeof(mat) ##元素数据类型;> dim(mat) ##维度,2行3列;> length(mat) ##元素个数;
> rownames(mat) ##获取行名;> colnames(mat) ##获取列名
3、访问矩阵中的元素:通过行、列名或位置来访问元素[],类似向量
4. 修改矩阵中的元素:通过赋值运算来改变矩阵中的内容,类似向量
通过rbind()和cbind()函数可添加行和列
5、矩阵的基本运算(类似向量)、转置(t()函数)、内积(%*%运算符/crossprod()函数)、行列式(det()函数)、对角元素操作(diag()函数)、逆(solve()函数)、提取矩阵的上下三角部分(upper.tri(x, diag = FALSE)和lower.tri(x, diag = FALSE)函数)以及如何将矩阵转化为向量(as.vector()函数/c()函数)。https://zhuanlan.zhihu.com/p/47854895
6、矩阵的函数(https://zhuanlan.zhihu.com/p/48725704)
1)rowSums()行和, colSums()列和, rowMeans()行平均, colMeans()列平均,
2)apply():apply(X, MARGIN, FUN, ...),其中:X为矩阵或数组;MARGIN用来指定是对行运算还是对列运算,MARGIN=1表示对行运算,MARGIN=2表示对列运算;FUN用来指定运算函数;...用来指定FUN中需要的其它参数, 设置na.rm=TRUE来忽略NA值,
3)rbind()、 cbind()分别为矩阵添加行和列, rownames()、colnames()分别为添加行名和列名,如原有4行,第5行添加平均值,则c(1:4, 'mean'),
4)row()、 col()分别返回元素的行和列下标矩阵,如行的下标矩阵,那第一行就都是1,第二行都是2,以此类推。
5)rowsum(), aggregate()对每行进行分组,然后组内每列求和;如行分组求和,可以先将矩阵转置。
6)sweep():sweep(x, MARGIN, STATS, FUN = "-", check.margin = TRUE, ...),其中:x为矩阵或数组;MARGIN用来指定是对行运算还是对列运算,MARGIN=1表示对行运算,MARGIN=2表示对列运算;STATS表示想要清除的统计量;FUN用来指定运算函数,默认为减法-;check.margin用来核实x的维度是否与STATS的匹配,如果事先知道它们匹配的话,将其设为FALSE将提高运算速度; ...用来指定FUN中需要的其它参数
7)max.col():返回矩阵每行最大值所在的列位置(即列下标),其原型为max.col(m, ties.method = c("random", "first", "last")),其中:m为矩阵;当存在多个最大值时,ties.method指定用哪种方式来处理这种情况,默认为"random"(随机),"first"指使用第一个最大值,"last"指使用最后一个最大值