r - 查找数字是否在范围列表中的最快方法是什么?
问题描述
我对 R 真的很陌生,我一直在寻找一种简单快捷的方法来检查一个数字是否在一个范围列表内。例如:
Numbers <- c(77,3,66)
RangesList <- data.frame(cbind(c(5,20,33,60,91),c(8,23,45,76,100)))
colnames(RangesList) <- c("Start","End")
> RangesList
Start End
1 5 8
2 20 23
3 33 45
4 60 76
5 91 100
现在我正在寻找一种简单快捷的方法(尽可能避免“如果”)来检查“数字”中的每个数字是否在 RangesList 中的某个范围内。在上面的例子中,我希望函数的结果是:
"FALSE" "FALSE" "TRUE"
我需要在 100k 行上应用这个函数,而我的范围列表大约有 2000 行——这就是为什么我要强调运行时的影响(运行时使用“if”大约需要 5 分钟),我正在寻找一个更“优雅”的解决方案。
谢谢 :)
解决方案
这是使用方法sapply
:
sapply(Numbers, function(x) any(x >= RangesList$Start & x <= RangesList$End))
#[1] FALSE FALSE TRUE
推荐阅读
- node.js - 从 JSON 中提取值
- angular - 从文件导入 SVG 并将其添加到 Angular 2+ 中的捆绑包
- android - 在异步任务中,构造函数是否首先运行 doInBackground?
- sql-server - 防止从 SSMS 导出文件中的行受影响的条目
- zsh - 如何更改powerlevel9k的提示颜色
- python - 列表中整数的成对比较
- java - Retrofit2 + RxJava2 全局处理错误
- kubernetes - Kubernetes kubectl bash 使用别名完成
- python - 如何匹配按空格分割的城市名称?
- c# - C#:如何从存储过程中在 ComboBox 中添加 2 个值