Умножение нечетных чисел в векторе - PullRequest
0 голосов
/ 28 января 2019

Я новичок в R, и мне нужно умножить нечетные числа (на два) следующего вектора:

x<-c(1:20)

Я пытался с этим: x2<-c[lapply(x,"%%",2*2)==1]

Но что-то не так.

Ответы [ 3 ]

0 голосов
/ 28 января 2019

Мы могли бы найти нечетные индексы и умножить их на 2.

inds <- as.logical(x %% 2)
x[inds] <- x[inds] * 2
x
#[1]  2  2  6  4 10  6 14  8 18 10 22 12 26 14 30 16 34 18 38 20
0 голосов
/ 28 января 2019

Для вектора, подобного вашему примеру, состоящего из последовательных целых чисел, мы можем использовать переработку

x * c(2,1)
##[1]  2  2  6  4 10  6 14  8 18 10 22 12 26 14 30 16 34 18 38 20

В более общем смысле, мы можем сделать

x * (x%%2 + 1L)
0 голосов
/ 28 января 2019

Используя базу r, мы можем попробовать

ifelse(x %% 2 != 0, x * 2, x)
> [1]  2  2  6  4 10  6 14  8 18 10 22 12 26 14 30 16 34 18 38 20
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...