Проблема с производительностью в lower.tri - PullRequest
0 голосов
/ 06 июня 2019

У меня есть две части кода здесь. выход1 и выход2 идентичны. Первый достигается с помощью базовой функции r lower.tri, которая, как я полагаю, полностью векторизована. Последний получается с помощью цикла for. К моему удивлению, цикл for в два раза быстрее, чем первый метод. Я ожидал, что первый метод будет намного быстрее, особенно с использованием только 20000 элементов. Буду признателен за понимание этого.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...