首页 > 解决方案 > 如何计算序列坐标的向量和数据框之间的匹配?

问题描述

给定一个数据表,其中包含整数序列的开始和结束坐标:

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

但是,我应用它的数据表和向量非常大?有人能提出提高性能的方法吗?

任何帮助将不胜感激!

标签: rperformancedata.table

解决方案


一种选择是使用between

library(data.table)
df1[, count := sum(between(vec1, START, END)), by = seq_len(nrow(df1))]

推荐阅读