c语言which函数的用法,2.8.3 选择函数which()

2.8.3 选择函数which()

正如你所看到的,筛选是从向量z中提取满足一定条件的元素。但是,在某些情况下,我们希望找到z中满足条件元素所在的位置。此时可以使用which(),如下所示:

d200dca602d7fe2c782b0d7b285e86d2.png

结果表明z中的***、第三和第四元素平方大于8。

和筛选一样,了解前面的代码到底发生了什么是很重要的。下面的表达式:

ec7bd2ad5676e44d9827e37dccd78839.png

计算得到(TRUE,FALSE,TRUE,TRUE)。which()函数简单地报告出在后面的表达式中哪些元素为TRUE。

which()有一个非常方便(尽管有点浪费)的用法,是在一个向量中找出满足一定条件的元素***出现的位置。例如,回顾本书2.1.2节代码,找出向量中的***个1。

e1f09a37afbdc1cd50267eddd55c8c39.png

这里有另一种写法能达成目标:

aa243ac0b9e3481b8688f11bb29abff4.png

调用which()产生x中所有1的索引。这些索引将以向量形式给出,然后我们取该向量中的***个元素,即是***个1的索引。

这一代码更加简洁。但另一方面,它也比较浪费,因为它找出了x中所有的1,而我们只需要***个。因此,尽管它是向量化方法,可能更快,但如果x中***个1出现在靠前的位置,则此方法实际上要慢一些。

【责任编辑:book TEL:(010)68476606】

点赞 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值