Lower.tri的性能问题

时间:2019-06-05 23:00:18

标签: r

我在这里有两个代码。输出1和输出2相同。前者是使用r基本函数lower.tri实现的,我认为它是完全矢量化的。后者是使用for循环获得的。令我惊讶的是,for循环比第一种方法快两倍。我希望第一种方法要快得多,尤其是只有2万个元素时。我希望对此有所了解。

my_vec <- 1:20000

n <- length(my_vec)

a <- Sys.time()

temp_vec <- c(my_vec , 0)

output1 <- matrix(rep(temp_vec, n), ncol = n, nrow = n, byrow = TRUE)

output1[lower.tri(output1)] <- 0

b <- Sys.time()

output2 <- matrix(0, n, n)
output2[1,] <- my_vec
for(i in (n-1):1){
  zeros <- rep(0, n-i)
  output2[n-i+1,] <- c(zeros, my_vec[1:i])
}

c <- Sys.time()

b-a

c-b

0 个答案:

没有答案