2016-09-22 3 views
2

Я работаю с двумя векторами и фрейма данных:Добавление NA к определенным частям замены

x <- c("A", "B", "D") 
y <- c(1, 3, 5) 

df: 
# var1 var2 
#1 ddAd NA 
#2 dBdd NA 
#3 ddCd NA 
#4 Dddd NA 

В результате я буду за это:

df: 
# var1 var2 
#1 ddAd 1 
#2 dBdd 3 
#3 ddCd NA 
#4 Dddd 5 

Кто-то предложил нижеследующий подход:

z <- grep(paste(x, collapse="|"), df$var1, value = FALSE) 
df$var2 <- y[z] 

Проблема, с которой я столкнулась, заключается в том, что моя замена имеет меньше линий, чем структура данных , Есть ли простой способ добавить NA к замене, чтобы они соответствовали строкам, которые не имеют «A», «B» или «D»?

+0

попробовать 'ф.р. $ var2 [г] <- у [г]' – akrun

+0

Да, работал для меня. –

+0

Чтобы уточнить, df $ var2 [z] <- y [z] - это тот, который работал для меня. –

ответ

1

Мы можем использовать индекс в 'г' на подмножество в 'var2' на lhs из <

df$var2[z] <- y 
Смежные вопросы