啦啦啦啦~ 开始学习! @开启学神模式,玩转R!
一上来就是属猪!!(数组),经常打成属猪!! &_& 哈哈
哇靠,维度向量(dimension vector)是一个正整数向量。如果它的长度为k,那么该数组就是k-维的。 这个喵的好牛逼的感觉! 你有木有? 搞得我鸡血奋战得很啊! 哈哈哈,哥不怕! 来来来,上实验:
实验一:
z<-seq(1,1500) dim(z) <- c(3,5,100) attributes(z) $dim [1] 3 5 100
嗯,dim的意思是”傻子,笨蛋“的意思,你个奶嘴的! 你才是傻子,笨蛋呢! 这个没什么技术含量! 输出的结果是3×5×100的数组。
数组的索引直接看官方文档, 数组索引
数组元素可以通过给定数组名及其后方括号中用逗号隔开的下标访问。可以根据索引数组去给数组中不规则的元素集合赋值或者将数组中特定的元素返回到一个向量中。
接下来进行好玩儿的数组代码!真的好玩,一秒让你爱上她!
实验二:
h <- seq(1,24) Z <- array(h, dim=c(3,4,2))
用seq排序把值赋给h,通过array(数组)把赋值的h再赋值给Z!,里面的(3,4,2)其实就是342=24,和语文作业本的方格一样,长为3,宽为4,总得显示为2页,很好理解吧?
dim(h) <- c(3,4,2)
这个代码和上面是等价的,理解了上一个,可以用这个来偷懒了!
数组的外积~ 其实这个和乘法口诀表一样一样的!知道么? 11 12 2*2.。。。。。等等,来看看实验
实验三:
a <- 1:3 b <- 1:3 ab <- a %o% b ab <- outer(a, b, "*") ab [,1] [,2] [,3] [1,] 1 2 3 [2,] 2 4 6 [3,] 3 6 9
外积是通过特别的操作符%o%实现的,记住它!其实这个可以做个九九乘法表!只需要把a,b的范围弄成1:9就搞定!
关于下面这个实验室三角函数的运算,我最恨三角函数了!有那么高科技在,非要自己算!
x<-c(1,2,3);y<-c(2,3,4) f <- function(x, y) cos(y)/(1 + x^2) z <- outer(x, y, f)'
这里其实就是有两个变量,x,y 然后我们可以看到 fuction定义x,y 去cos运算的表达式, 然后再把x,y,f的值输出为z,就搞定了!原理很简单! 不需要人算! 好方便! 数组的广义转置
函数aperm(a, perm) 可以用来重排一个数组a
B <- aperm(z, c(2,1)) 等价操作
t(z)
矩阵相乘
操作符%*% 用于矩阵相乘。 如果A和B是大小一样的方阵,那么
A * B 将是一个对应元素乘积的矩阵,而
A %*% B 则是一个矩阵积。如果x是一个向量,那么
x %% A %% x 通过上述数组外积中的z和x试试下列代码:
zz z %% z x %% z %% x crossprod():可以完成"矢积"运算,也就是说crossprod(X,y) 和t(X) %*% y 等价,而且在运算上更为高效。 diag():返回以该向量元素为对角元素的对角矩阵。
解线性方程和求逆
求解线性方程组是矩阵乘法的逆运算。当下面的命令运行后,
b <- A %*% x 如果仅仅给出A和b,那么x就是该线性方程组的根。在R里面,用命令
solve(A,b) 矩阵的逆可以用下面的命令计算
solve(A)