2013-09-27 2 views
1

Может ли кто-нибудь показать мне способ изменения каждой второй строки в столбце матрицы, чтобы иметь противоположный знак тому, который у него есть (например, изменение 4 - 4, или от -4 до 4)? Я могу сделать это с циклом for, но я надеялся, что может быть более эффективный метод для этого.Изменение любой другой строки в матрице в R

ответ

3

Если у вас есть даже количество строк, попробуйте

c(1,-1)*M 

Где M является вашей матрицей.

В противном случае используйте

(2*(row(M) %% 2)-1)*M 

EDIT: предложение Карла Witthoft в:

rep(c(1,-1),length=nrow(M))*M 

работает с любой матрицей.

+0

Ницца: Я думаю, что вы можете упростить 'повторении (с (1, -1), длина = nrow (M)) * M' –

+0

Работал отлично, спасибо! – Mike

+2

@Mike, если это сработало для вас, отметьте как ответ. – zx8754

Смежные вопросы