我目前正在处理一个在2列的大矩阵上工作的函数(值的数量通常> 2000),并且存在时间问题。
这是我矩阵的头:
matrix
这是我的功能:

get <- function()
{
  v <- sample(1:1e6,20000, replace=TRUE) #for example
  table <- #mymatrix
  for ( i in 1:nrow(table))
  {
    b <- which(v > table[i,1] & v < table[i,2]) #want index between 2 intervals
  }
  return(b)
}

问题是当我为整个表重复循环时,它太长了,我找不到解决方法(仍在R中学习)。
帮助将不胜感激。
++

最佳答案

正如Andrey在评论中所说,您只返回最后一行的结果。您也没有将table传递给函数(实际上,您的函数没有参数),并且还不清楚v代表什么,尤其是为什么它的值比table的行多。

但是,假设您想要所有行的结果,则可以做两件事:


不要使用which,您可能不需要数字索引。
使用向量化而不是for循环:




get = function(table) {
  v = sample(1 : 1E6, 20000, replace = TRUE)
  v > table[, 1] & v < table[, 2]
}


而已。

10-05 23:47
查看更多