week1note

1.拉直

a <- matrix(1:10, ncol = 2, byrow = T)
a
matrix(a, ncol = 1)

2.apply

apply(X, MARGIN, FUN, ...)其中X为一个数组,MARGIN是固定哪些维不变,FUN是用来计算的函数。例如,设a是n*m 矩阵,则apply(a, 1, sum)的意义是对a的各行求和(保留第一维即第一个下标不变),结果是一个长度为n的向量(与第一维长度相同),而apply(a, 2, sum)意义是对a的各列求和,结果是一个长度为m的向量(与第二维长度相同)

a=cbind(c(4,9,1),c(3,7,2))
apply(a,1,sort )

3.外积

两个数组a和b的外积是由a的每一个元素与b的每一个元素搭配在一起相乘得到一个新元素,这样得到一个维数向量等于a的维数向量与b的维数向量连起来的数组,
即若d为a和b的外积,则dim(d)=c(dim(a), dim(b))
a和b的外积记作 a %o% b。如 d <- a %o% b 也可以写成一个函数调用的形式: d <- outer(a, b, '*') 注意outer(a, b, f)是一个一般性的外积函数,它可以把a的任一个元素与b的任意一个元素搭配起来作为f的自变量计算得到新的元素值,外积是两个元素相乘的情况。函数当然也可以是加、减、除,或其它一般函数。当函数为乘积时可以省略不写。
例如,我们希望计算函数 在一个x和y的网格上的值用来绘制三维曲面图,可以用如下方法生成网格及函数值:
例子1:

x <- seq(-2, 2, length=20) 
y <- seq(-pi, pi, length=20) 
f <- function(x, y) cos(y)/(1+x^2) 
z <- outer(x, y, f)
persp(x,y,z)

例子2:
考虑简单的2×2矩阵 ,其元素均在0,1,…,9中取值。假设四个元素 a, b, c, d都是相互独立的服从离散均匀分布的随机变量,我们设法求矩阵行列式 ad-bc的分布。首先,随机变量 ad和 bc同分布,它的取值由以下外积矩阵给出,每一个取值的概率均为1/100:

x <- outer(0:9, 0:9);x

这个语句产生一个外积矩阵。为了计算 ad的100个值(有重复)与 bc的100个值相减得到的10000个结果,可以使用如下外积函数:

y<- outer(x, x, "-");y[1,1,,]

这样得到一个维数向量为c(10,10,10,10)的四维数组,每一个元素为行列式的一个可能取值,概率为万分之一。因为这些取值中有很多重复,我们可以用一个table()函数来计算每一个值的出现次数(频数):

f <- table(y);f[1:10]
plot(as.numeric(names(f)), f, type="h",xlab="行列式值",ylab="频数") 

其中as.numeric()把向量f中的元素名又转换成了数值型,用来作为作图的横轴坐标,f 中的元素值即频数作为纵轴,type="h"表示是画垂线型图。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值