我目前正在处理一个在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]
}
而已。