在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
2.6 向量化运算符假设我们希望对向量x中的每一个元素使用函数f()。在很多情况下,我们可以简单地对x调用f()就能完成。 在这里,>函数分别运用在u[1] 和v[1],得到结果TRUE,然后是u[2] 和 v[2],得到结果FALSE,以此类推。 在这里,w()使用了向量化的运算符+,从而w()也是向量化的。正如你看到的,存在无数个向量化的函数,因为用简单的向量化函数可以构建更复杂的函数。 这也适用于其他许多内置的R函数。例如,让我们对向量y应用round()函数,其作用是四舍五入到最近整数: 上例的关键在于,round()函数能应用到向量y中的每一个元素上。记住,标量实际上是一元向量,所以通常情况下对单个数值使用round()函数,只是一种特殊情形。 在这里,我们使用内置的函数round(),但用你自己编写的函数同样可以做到这点。 上例中三元向量的每个元素都加上了4,原因在于+实际上也是函数!下面这样写就看得明显了: 同时也要注意,循环补齐在这里起了关键作用,4被循环补齐为(4,4,4)。 在这里定义的f(),我们希望c是一个标量,但实际上它当然是一个长度为1的向量。即使我们调用f()时给c指定的是单个数值,在f()计算x+c时,它也会通过循环补齐的方式延展为一个向量。因此对于本例中调用的f(1:3,1),x+c的值变为如右所示: 你需要通过计算确认(4,16,36)是否的确是期望的输出。 2.6.2 向量输入,矩阵输出 对5使用函数z12(),将得到二元向量(5,25),如果我们将它应用在八元向量,则它生成16个数值: 但我们可以用sapply()(它是simplify apply的缩写)来简化这一切。调用sapply(x,f)即可对x的每一个元素使用函数f(),并将结果转化为矩阵。下面是一个例子: 我们得到2×8而不是8×2维的矩阵,但它同样是有用的。第4章将进一步讨论sapply()函数。 |
请发表评论