r - 如何计算序列坐标的向量和数据框之间的匹配?
问题描述
给定一个数据表,其中包含整数序列的开始和结束坐标:
set.seed(1)
df1 <- data.table(
START = c(seq(1, 10000000, 10), seq(1, 10000000, 10), seq(1, 10000000, 10)),
END = c(seq(10, 10000000, 10), seq(10, 10000000, 10), seq(10, 10000000, 10))
和一个整数向量:
vec1 <- sample(1:100000, 10000)
如何计算 vec1 中 df1 中每个序列的开始和结束坐标内的整数个数?我目前正在使用 for 循环:
COUNT <- rep(NA, nrow(df1))
for (i in 1:nrow(df1)){
vec2 <- seq(from = df1$START[i], to = df1$END[i])
COUNT[i] <- table(vec2 %in% vec1)[2]
print(i)
}
df1$COUNT <- COUNT
但是,我应用它的数据表和向量非常大?有人能提出提高性能的方法吗?
任何帮助将不胜感激!
解决方案
一种选择是使用between
library(data.table)
df1[, count := sum(between(vec1, START, END)), by = seq_len(nrow(df1))]
推荐阅读
- sql - SQL Oracle:如何从元数据表中获取每个模式的每个视图的列数
- go - 在 gmail imap 标头中收到不同的日期和时间格式
- python - 比较两个日期时间对象,看看它们是否相隔最多 2 分钟
- c++ - 增加 cgo 中的最大堆栈大小
- c - CLion 无法识别 CMakeLists.txt 文件
- prometheus - Prometheus“阅读:对等方重置连接”
- tensorflow - 我的 ResNet50 在两台机器上有什么问题?
- c# - 获取文字系统变量路径
- mongodb - 返回组,包括 MongoDB 聚合中的零条目
- java - LocalDate 的休眠模式验证失败 - 找到日期,但需要时间戳