<分区>
我有 2 个 data.frames
df <- data.frame(addr=c('a','b','c','d'), num = c(1,2,3,4))
> df
addr num
1 a 1
2 b 2
3 c 3
4 d 4
df2 <- data.frame(addr=c('a','b','d'), num=c(100,200,500))
> df2
addr num
1 a 100
2 b 200
3 d 500
如果条件 df$addr 匹配 df2$addr,我想用 df2$num 中的值替换 df$num 中的值。我设法用下面的代码得到了这个
df[,"num"] <- sapply(df[,"addr"], function(x) ifelse(x %in% df2$addr,df2$num[match(x,df2$addr)],df[df$addr==x,]$num))
> df
addr num
1 a 100
2 b 200
3 c 3
4 d 500
我想知道是否有使用 dplyr 或 data.table 的更优雅的方法?