- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
我们也可以先定义矩阵x然后再为dimnames x 赋值。 对于矩阵,我们还可以使用属性rownames和colnames来访问行名和列名。 在定义了数组的维名后我们对这一维的下标就可以用它的名字来访问, x - matrix 1:6, ncol 2,byrow T rownames x - c 第一行, 第二行, 第三行 colnames x - c 第一列, 第二列 x 第一列 第二列 第一行 1 2 第二行 3 4 第三行 5 6 x[第一行, 第二列] [1] 2 x[第一行, ] 第一列 第二列 1 2 x[, 第二列] 第一行 第二行 第三行 2 4 6 数组的外积 两个数组a和b的外积是由a的每一个元素与b的每一个元素搭配在一起相乘得到一个新元素,这样得到一个维数向量等于a的维数向量与b的维数向量连起来的数组, a -c 1,2,3 b -c 2,5,7 a%o%b [,1] [,2] [,3] [1,] 2 5 7 [2,] 4 10 14 [3,] 6 15 21 注意:b%o%a t a%o%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的自变量计算得到新的元素值,外积是两个元素相乘的情况。函数当然也可以是加、减、除,或其它一般函数。当函数为乘积时可以省略不写。 outer a,b,+ [,1] [,2] [,3] [1,] 3 6 8 [2,] 4 7 9 [3,] 5 8 10 例如,我们希望计算函数 在一个x和y的网格上的值用来绘制三维曲面图,可以用如下方法生成网格及函数值: 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矩阵 ,其元素均在0,1,...,9中取值。假设四个元素 a, b, c, d都是相互独立的服从离散均匀分布的随机变量,我们设法求矩阵行列式 ad-bc的分布。首先,随机变量 ad和 bc同分布,它的取值由以下外积矩阵给出,每一个取值的概率均为1/100: x - outer 0:9, 0:9 #两个向量的各种取值 这个语句产生一个10×10 的外积矩阵。为了计算 ad的100个值(有重复)与 bc的100个值相减得到的10000个结果,可以使用如下外积函数: y - outer x, x, “-” #两者想减的各种可能 这样得到一个维数向量为c 10,10,10,10 的四维数组,每一个元素为行列式的一个可能取值,概率为万分之一。因为这些取值中有很多重复,我们可以用一个table 函数来计算每一个值的出现次数(频数): f - table y 得到的结果是一个带有元素名的向量f,f的元素名为y的一个取值,f的元素值为y该取值出现的频数,比如f[1]的元素名为-81,值为19,表示值-81在数组d2中出现了19次。通过计算length f 可以知道共有163个不同值。还可以把这些值绘制一个频数分布图(除以10000 则为实际概率): plot as.numeric names f , f, type h, xlab “行列式值, ylab 频数 其中as.numeric 把向量f中的元素名又转换成了数值型,用来作为作图的横轴坐标,f 中的元素值即频数作为纵轴,type h表示是画垂线型图。 plot as.numeric names f ,f,type h,xlab 行列式值,ylab 频数 plot as.numeric names f ,f/10000,type h,xlab 行列式值,ylab 频率 数组的广义转置 可以用aperm a, perm 函数把数组a的各维按perm中指定的新次序重新排列。例如: a - array 1:24, dim c 2,3,4 #2行3列4组 b - aperm a, c 2, 3, 1 #3行4列2组 结果a的第2维变成了b
文档评论(0)