通常的思路是:一个一个merge,但是费时间且代码看起来十分丑陋,Reduce函数可以比较好地解决这个问题。
cumsum(1:4)
Reduce("+",c(1:4),accumulate =TRUE)
Reduce("+",c(1:4),accumulate =FALSE)
Reduce函数是将每次计算后的结果保留,并与下一个数字进行计算,这是和 apply 函数不同的。因此在对多个数据框进行merge时,可如下操作:
df1 <- data.frame(id=c(1,2,3),name=c('Joseph','Summer','dograbbit'))
df2 <- data.frame(id=c(1,2),money=c('0','100'))
df3 <- data.frame(id=c(1,3),looking=c('handsom','cute'))
Reduce(function(x,y) merge(x,y,by="id",all.x=TRUE),list(df1,df2,df3),accumulate =FALSE)