2016-10-28 4 views
2

Я очень новичок в R и программировании в целом, и мне нужна помощь. Я хочу сделать функцию, которая умножает все четные числа в данной матрице 3, например, в этой матрице:Как множить элементы с помощью условного оператора?

X = matrix(1:9,3,3) 

Я попытался функцию, заменить, как это:

Multiply = function(M) { 
x=M*3 
replace(M, M%%2==0, x) 
} 

которым дает мне в результате я не понимаю. Любая помощь будет высоко оценена!

+2

использовать 'ifelse' для этого или' Multiply <- function (M) { i1 <- M %% 2 == 0; M [i1] <- M [i1] * 3; M } ' – akrun

+1

Спасибо! Это было легко понять. –

+1

Или 'X * (1 + 2 * (X %% 2 == 0))'? – Frank

ответ

0

Мы можем создать функцию, как

Multiply <- function(M){ i1 <- M%%2 == 0 
      M[i1] <- M[i1]*3 
      M } 
0

Это работает для примера:

mymult <-function(M, num.row, num.col){ 
    vec = c(M) 
    vec[vec %% 2 == 0]=vec[vec%%2 == 0]*3 
    return(matrix(vec, num.row, num.col)) 
} 

векторизацию первых и проверки, которые даже и умножают те с тремя и снова реконструируют матрицу.

+0

Спасибо вам за помощь, я выяснил решение! –

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