setdiff()在knitr和交互中的行为不同

setdiff()在knitr和交互中的行为不同,r,dplyr,knitr,R,Dplyr,Knitr,当我以交互方式执行dplyr中的setdiff()函数时,它的行为与使用knitr的.Rmd文档中的不同。具体来说, who_comp <- who %>% complete(country, year) imp_miss <- dplyr::setdiff(union(who, who_comp), intersect(who, who_comp)) who_comp%完成率(国家,年份) imp_小姐,你不应该同时使用dplyr::union和dplyr::interse

当我以交互方式执行dplyr中的
setdiff()
函数时,它的行为与使用knitr的.Rmd文档中的不同。具体来说,

who_comp <- who %>% complete(country, year)
imp_miss <- dplyr::setdiff(union(who, who_comp), intersect(who, who_comp))
who_comp%完成率(国家,年份)

imp_小姐,你不应该同时使用
dplyr::union
dplyr::intersect
吗?@Frank谢谢!这似乎解决了问题——我猜是使用了
base::union()
,它给出了一个列表。你知道为什么会这样吗?为什么列表是两个Tibble的“通用模式”?奇怪的是,
base::intersect(who,who-comp)
给出了一个空的数据帧,而`dplyr::intersect(who,who-comp)给出了一个7240x60的数据帧。base中的
?集合
函数只针对简单向量设计,并没有根据输入进行不同的应用。TIBLE是一个列向量,因此可能基本并集函数会尝试为您提供列的并集,等等@Frank See
?对于加载的内容,冲突
。嗯,奇怪。如果你能发布一个小的可复制rmd,我很乐意重新打开。