说的我怅然若失, 如果所有的东西都是无意义的, 那么什么是有意义的? 换句话说, 一定要是有意义的才可以做么? 其实我是机器人, 机械的探讨一下机器人本身的意义, 然后继续下雨浇花. 1, R语言介绍R语言是为统计设计的编程语言, 不同领域的人写了相关专业的包, 有很多人共同维护. 软件是免费开源的. 许多收费软件比如SAS和SPSS, 价格昂贵, R是一个替代软件. 2, 面向对象的语言R语言是一个交互式的语言, 它的每一个命令都是一个对象, 对象可以设置参数, 具体结构如下: command( arg1, arg1, ... ) 每一个对象都有相应的属性, 我们可以通过这些函数获得对象的属性: class( name of object ) = tells you the type of object
length( name of object ) = tells you the number of columns
mode( name of object ) = numeric, list, matrix, etc. 3, 数据框数据框是由行和列构成的, 比较类似Excel的sheet表, 第一行经常有行头名(即使变量的名称), 也可以没有行头名. 读取数据可以使用read.table函数, 用法如下: mydframe = read.table("filepath/filename",header=TRUE) 4, summary汇总统计summary是一个汇总统计, 它会给出数据的基本汇总信息.比如cars是R语言默认的数据集. 使用data导入数据集, 使用summary查看cars的数据汇总结果. data(cars)
cars summary(cars) speed dist
Min. : 4.0 Min. : 2.00
1st Qu.:12.0 1st Qu.: 26.00
Median :15.0 Median : 36.00
Mean :15.4 Mean : 42.98
3rd Qu.:19.0 3rd Qu.: 56.00
Max. :25.0 Max. :120.00 5, 选择数据框的行和列的子集比如cars, 我想选择1~5行 cars[1:5,] 我想选择第二列的数据 cars[,2] 6, 改变数据框的某个值比如我改变cars的第一行的dist值, 原来为2, 变为3 cars[1,2] =3;
head(cars) 7, 做直方图对cars的dist做直方图 hist(cars$dist) 也可以生成1000个随机数, 做直方图 set.seed(123)
v = rnorm(1000)
hist(v) 8, 查看数据及的频率表比如查看speed不同速度的个数, 可以使用table函数 table(cars$speed) 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25
2 2 1 1 3 2 4 4 4 3 2 3 4 3 5 1 1 4 1
9, 矩阵运算矩阵运算有时候在分析数据时非常用于, 这里展示一些常用的函数 9.1 生成一个矩阵ww = matrix(data=c( 50, 6, 6.5, 6, 6, 0, 6.5, 0, 6.5),nrow=3,ncol=3 )
ww wy = matrix(data=c(251.7, 28.16, 31.09), nrow=3,ncol = 1 )
wy 转置矩阵, 使用t函数 t(ww) diag可以提取对角矩阵, 也可以生成对角矩阵, 比如生成对角线为0 10 10的3*3对角矩阵 diag(c(0,10,10)) 9.2 对矩阵求广义逆矩阵R语言默认的求逆函数时solve, 要计算广义逆矩阵, 需要用到MASS的ginv函数 library(MASS)
cww = ginv(ww)
cww 矩阵之间的乘法, 使用%*%函数 re = cww %*% ww# round是保留有效数字的函数round(re,4) 9.3 矩阵的迹(trace)矩阵的迹, 是对角线之和. 迹用于确定方差分析的自由度,并且在EM 和REML算法估算方差分量中有应用 diag(ww) trace = sum(diag(ww))
trace 9.4 矩阵的Choleskey分解对于正定矩阵A,可对其进行Choleskey分解,即:A=P’P,其中P为上三角矩阵,在R中可以用函数chol()进行Choleskey分解. 9.5 直积与直和定义两个函数:
# function for direct sum and direct productdirect_sum<- function(mat1,mat2){
r1 <- dim(mat1)[1];c1<- dim(mat1)[2]
r2 <- dim(mat2)[1];c2<- dim(mat2)[2]
rbind(cbind(mat1,matrix(0,r1,c2)),cbind(matrix(0,r2,c1),mat2))
}
direct_product <- kronecker 示例: m1 <- matrix(c(4,6,3,8),2,2)
m2 <- matrix(c(1,3,2,5),2,2)
m1
m2 direct_sum(m1,m2)
direct_product(m1,m2)
|
|