r - 我什么时候应该使用“which”进行子集化?
问题描述
这是一个玩具示例。
iris %>%
group_by(Species) %>%
summarise(max = Sepal.Width[Sepal.Length == max(Sepal.Length)])
# A tibble: 3 x 2
Species max
<fct> <dbl>
1 setosa 4
2 versicolor 3.2
3 virginica 3.8
它在使用时提供相同的输出which()
。
iris %>%
group_by(Species) %>%
summarise(max = Sepal.Width[which(Sepal.Length == max(Sepal.Length))])
# summarise(max = Sepal.Width[which.max(Sepal.Length)])
# A tibble: 3 x 2
Species max
<fct> <dbl>
1 setosa 4
2 versicolor 3.2
3 virginica 3.8
help(which)
说:
给出逻辑对象的 TRUE 索引,允许数组索引。
==
做同样的事情:显示 TRUE & FALSE
那么什么时候which()
对子集有用呢?
解决方案
什么时候"=="
结束NA
。尝试(1:2)[which(c(TRUE, NA))]
与(1:2)[c(TRUE, NA)]
.
如果NA
未删除,则按NA
给出的索引NA
(请参阅 参考资料?Extract
)。但是,此删除不能由 完成na.omit
,否则您可能会得到TRUE
可能错误的位置。一个安全的方法是替换NA
然后FALSE
做索引。但是为什么不直接使用which
呢?
推荐阅读
- c# - LINQ 只返回集合中的一项
- java - 在 JavaFX 中调整图像的不透明度
- javascript - 在 Laravel 中注册 ServiceWorker
- python-3.x - 如何使用 VSCode / Spyder 访问远程 python 内核
- node.js - GraphQL:一个大查询与大量小查询
- python - 如何在 python-igraph 中删除边缘属性
- c# - 带有内存流的内存泄漏
- reactjs - 如何使用酶在函数内调用事件目标 - React
- java - 在java中查找和的对数
- apache-kafka - 同组的kafka消费者如何在他们之间共享消息?