Как установить значение матрицы в цикле? - PullRequest
2 голосов
/ 24 ноября 2011

У меня две матрицы одинакового размера, 2 миллиона строк и 2 столбца. matrix_a имеет значения, в то время как matrix_b не заполнено, значение matrix_b будет определено в matrix_a.

matrix_b <- matrix(, nrow(matrix_a),2)
for(rows in 1:nrow(matrix_a)){
    if (matrix_a[rows,1]==0){
         .....do something get values of x, 
         matrix_b[rows,2] = x
         }
    else {
          do sth else get value of y,
          then set matrix_b 
          }
    }

Во-первых, как я могу ускорить этот цикл, так как есть 2 миллиона строк, это очень медленно обрабатывать. Во-вторых, я заметил, что когда я пытался просто скопировать одно значение из matrix_a в matrix_b, оно, похоже, не работает. Например, пока в моих данных

matrix_a[1,1] = 'user1'

после того, как я скопирую значения как

matrix_b[1,1] = matrix_a[1,1]

однако, результат включается как

matrix_b[1,1]='1'

Как получилось? Почему значения 'user1' не установлены на matrix_b?

Я только что узнал, что это может быть связано с сортировкой, так как я сначала сортирую свои данные, чтобы сгенерировать matrix_a. Значение «1» здесь означает первую строку после сортировки, но я до сих пор не знаю, как она заканчивается в matrix_b.

1 Ответ

2 голосов
/ 24 ноября 2011

Если два «somethings» и «somethings-else» могут быть инкапсулированы в функции, которые доставляют вектор такой же длины, как и matrix_a[ ,1], вы можете сконструировать векторы sth_a и sth_b и затем запустить

matrix_b[ , 2] <- ifelse(matrix_a[ ,1] == 0,  sth_a , sth_b)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...