2.8.3 选择函数which()
正如你所看到的,筛选是从向量z中提取满足一定条件的元素。但是,在某些情况下,我们希望找到z中满足条件元素所在的位置。此时可以使用which(),如下所示:
结果表明z中的***、第三和第四元素平方大于8。
和筛选一样,了解前面的代码到底发生了什么是很重要的。下面的表达式:
计算得到(TRUE,FALSE,TRUE,TRUE)。which()函数简单地报告出在后面的表达式中哪些元素为TRUE。
which()有一个非常方便(尽管有点浪费)的用法,是在一个向量中找出满足一定条件的元素***出现的位置。例如,回顾本书2.1.2节代码,找出向量中的***个1。
这里有另一种写法能达成目标:
调用which()产生x中所有1的索引。这些索引将以向量形式给出,然后我们取该向量中的***个元素,即是***个1的索引。
这一代码更加简洁。但另一方面,它也比较浪费,因为它找出了x中所有的1,而我们只需要***个。因此,尽管它是向量化方法,可能更快,但如果x中***个1出现在靠前的位置,则此方法实际上要慢一些。
【责任编辑:book TEL:(010)68476606】
点赞 0