在许多情况下,对于某些变量对数据帧进行分组后,我希望应用一个使用来自另一个按相同变量分组的数据帧的数据的函数。我找到的最佳解决方案是在函数内部使用 semi_join 如下:
d1 <- data.frame(model = c(1,1,2,2), x = runif(4) )
d2 <- data.frame(model=c(1,1,1,2,2,2), y = runif(6) )
myfun <- function(df1, df2) {
subsetdf2 <- semi_join(df2, df1)
data.frame(z = sum(d1$x) - sum(subsetdf2$y)) # trivial manipulation just to exemplify
}
d1 %>% group_by(model) %>% do(myfun(., d2))
问题在于semi_join返回“Joining by…”信息,而我正在使用该函数进行引导程序,导致控制台崩溃了很多信息。那么,有没有办法减少连接的冗长性?您知道更优雅的方式来做这样的事情吗?
附言:我几年前曾经为plyr提出过类似的问题:subset inside a function by the variables specified in ddply