* _join带有空后缀

时间:2016-11-14 06:31:39

标签: r dplyr

公平警告:这可能会导致操作系统挂起。

当左侧或右侧后缀中的任何一个被指定为空(*_join())时,来自dplyr

''失败,例如

inner_join(data.frame(x=1, y=2),
           data.frame(x=1, y=3),
           by='x',
           suffix=c('', '.b'))

以下工作正常:

inner_join(data.frame(x=1, y=2),
           data.frame(x=1, y=3),
           by='x',
           suffix=c('.a', '.b'))

同时,S3泛型merge()(base)对空后缀没有问题:

merge(data.frame(x=1, y=2),
      data.frame(x=1, y=3),
      by='x',
      suffixes=c('', '.b'))

dplyr包信息:

> packageVersion('dplyr')
[1] ‘0.5.0’

R版本信息:

> version

platform       x86_64-w64-mingw32          
arch           x86_64                      
os             mingw32                     
system         x86_64, mingw32             
status                                     
major          3                           
minor          3.0                         
year           2016                        
month          05                          
day            03                          
svn rev        70573                       
language       R                           
version.string R version 3.3.0 (2016-05-03)
nickname       Supposedly Educational 

1 个答案:

答案 0 :(得分:6)

当我偶然发现这个错误时,这很有趣。以下将使用dplyr使用后缀''.b

来实现预期效果
library(dplyr)
inner_join(data.frame(x=1, y=2),
           data.frame(x=1, y=3),
           by='x',
           suffix=c('.a', '.b')) %>%
  setNames(gsub('\\.a$', '', names(.)))