Установить конкретные векторные элементы в NA в R - PullRequest
0 голосов
/ 28 апреля 2018

Я пытаюсь выполнить упражнение для моего онлайн-курса R. У нас есть вектор B:

B<-c(seq(10,75,by=1))

И я хочу установить все элементы, которые делятся на 5 (без остатка, например, 5, 10, 15) на NA. Вектор будет выглядеть следующим образом (NA, 11, 12, 13, 14, NA, ...,). Моя идея состоит в том, чтобы использовать оператор по модулю %% и функцию замены:

replace((B%/%5==0),B,NA)

Когда я делаю это, вектор возвращает следующий вывод:

[1]  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE    NA    NA    NA    
NA
[14]    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    
NA
[27]    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    
NA
[40]    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    
NA
[53]    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    
NA
[66]    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA

Кто-нибудь может предложить решение проблемы?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Вот еще один подход, использующий оператор ifelse():

B <- ifelse(B %% 5 == 0, NA, B)

Эти ifelse() операторы могут стать мощными связями, чтобы применить несколько условий к одному и тому же вектору за один раз!

Например, если мы хотим преобразовать все четные числа в нашем векторе B в NA, то мы можем сделать это:

B <- ifelse(B %% 5 == 0, NA, ifelse(B %% 2 == 0, NA, B))

Более подробную информацию о функции ifelse() можно найти здесь .

0 голосов
/ 28 апреля 2018

Вы можете использовать это:

B[ B %% 5 == 0 ] = NA
...