Как оптимизировать эту функцию по скорости - PullRequest
0 голосов
/ 07 октября 2019

Я применяю эту функцию параллельно над очень большой матрицей (50k + столбцы и строки) и мне нужно оптимизировать ее по скорости. Входные данные представляют собой массив значений ранга, и для каждого значения ранга в массиве я присваиваю соответствующее значение и возвращаю этот массив значений. Я немного растерялся, как заставить его работать быстрее.

my_function <- function(x) {

  buckets <- round(length(x)*c(0.001075,0.001290,0.001720,0.002150,0.003010,0.004300,0.006449,0.008599,0.012899,0.019348,0.032247,0.053745,0.086637,0.140382,0.227449))

  y <- numeric(length(x))

  y[x<=buckets[1]] <- 311
  y[x>buckets[1]&x<=buckets[2]] <- 40
  y[x>buckets[2]&x<=buckets[3]] <- 30
  y[x>buckets[3]&x<=buckets[4]] <- 20
  y[x>buckets[4]&x<=buckets[5]] <- 15
  y[x>buckets[5]&x<=buckets[6]] <- 10
  y[x>buckets[6]&x<=buckets[7]] <- 8
  y[x>buckets[7]&x<=buckets[8]] <- 6
  y[x>buckets[8]&x<=buckets[9]] <- 5
  y[x>buckets[9]&x<=buckets[10]] <- 4
  y[x>buckets[10]&x<=buckets[11]] <- 3
  y[x>buckets[11]&x<=buckets[12]] <- 2.4
  y[x>buckets[12]&x<=buckets[13]] <- 2
  y[x>buckets[13]&x<=buckets[14]] <- 1.8
  y[x>buckets[14]&x<=buckets[15]] <- 1.6
  y[x>buckets[15]] <- 0

  return(y)

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...