Замените пустые записи на NA в векторе

Я хотел бы заменить все вхождения "" в векторе на <NA>. Предполагать,

 V<- c("","Axe","Saw","")

Тогда после замены

  V<- c("<NA>","Axe","Saw","<NA>")

Использовать gsub для замены подстроки легко, но для поиска "" я думаю, что мне нужно использовать / или \ внутри "", но не уверен, как это сделать.


r na
person user3922546    schedule 25.01.2015    source источник
comment
Если вы хотите заменить пустые строки на NA, вы можете сделать V[V==''] <- NA. Не вижу смысла заменять на символ NA. т.е. "<NA>" Предположим, что ваш V — это V <- c('""', 'Axe', 'Saw', '""'); gsub("[\"]+", "<NA>", V)   -  person akrun    schedule 25.01.2015
comment
Никогда не думал об этом. Спасибо.   -  person user3922546    schedule 25.01.2015
comment
Если ваш вектор фактически получен из фрейма данных, и "" появляется при чтении этих данных в R, вы также можете взглянуть на аргумент na.strings в функциях read.table/csv/xyz.   -  person Henrik    schedule 25.01.2015


Ответы (2)


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

is.na(V) <- V == ""

для замены пустых строк на NA.

person Sven Hohenstein    schedule 25.01.2015

Существует функция, названная в честь того, что вы пытаетесь сделать: replace().

С его помощью вы можете:

> V<- c("","Axe","Saw","")
> V
[1] ""    "Axe" "Saw" ""   
> replace(V, V == "", NA)
[1] NA    "Axe" "Saw" NA 

Это все равно, что сказать «заменить в векторе 'V' любые значения, равные '""' на NA". Итак, это не дословная транскрипция названия вашего вопроса, но довольно близко :-)

person A5C1D2H2I1M1N2O1R2T1    schedule 25.01.2015