Я застрял в простом цикле, который занимает больше часа, и мне нужна помощь, чтобы ускорить его.
По сути, у меня есть матрица с 31 столбцом и 400 000 строк.Первые 30 столбцов имеют значения, а 31-й столбец имеет номер столбца.Мне нужно для каждой строки извлечь значение в столбце, указанном в 31-м столбце.
Пример строки: [26,354,72,5987 .., 461,3] (это означает, что значение в столбце 3(72))
Слишком медленный цикл выглядит следующим образом:
a <- rep(0,nrow(data)) #To pre-allocate memory
for (i in 1:nrow(data)) {
a[i] <- data[i,data[i,31]]
}
Я думаю, это будет работать:
a <- data[,data[,31]]
... ноэто приводит к «Ошибка: невозможно выделить вектор размером 2,8 Мб».
Боюсь, что это действительно простой вопрос, поэтому я потратил часы, пытаясь понять, применять, удовлетворять, изменять форму и многое другое, нопочему-то я не могу понять концепцию векторизации в R.
В матрице на самом деле есть еще больше столбцов, которые также входят в a-параметр, поэтому я не хочу перестраивать матрицу,или разделите его.
Ваша поддержка высоко ценится!
Крис