2016-12-27 1 views

ответ

2

Предполагая, что у вас есть уникальные идентификаторы, вы можете использовать match, чтобы узнать индекс строки, где ключи необходимо заменить, а затем назначить replace_key в эти позиции для столбца key. Соответствующие элементы будут заменены в следующем порядке:

df$key[match(replace_id, df$id)] <- replace_key 

df 
# id key 
#1 1 1 
#2 2 2 
#3 3 5 
#4 4 4 
#5 5 5 
#6 6 6 
#7 7 7 
#8 8 8 
#9 9 2 
#10 10 10 
1

Мы можем использовать mapply над двумя векторами replace_id и replace_key найти соответствующую клавишу и назначить соответствующие значения с <<-

mapply(function(x, y) df$key[df$id == x] <<- y, replace_id, replace_key) 

df 
# id key 
#1 1 1 
#2 2 2 
#3 3 5 
#4 4 4 
#5 5 5 
#6 6 6 
#7 7 7 
#8 8 8 
#9 9 2 
#10 10 10 
0

Вот вариант присоединиться data.table

library(data.table) 
setDT(df)[data.frame(id = replace_id, val= replace_key), key := as.integer(val), on = "id"] 
df 
# id key 
# 1: 1 1 
# 2: 2 2 
# 3: 3 5 
# 4: 4 4 
# 5: 5 5 
# 6: 6 6 
# 7: 7 7 
# 8: 8 8 
# 9: 9 2 
#10: 10 10