2016-11-14 3 views
6

Справедливое предупреждение: это может повесить вашу операционную систему.* _join с пустым суффиксом

*_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() (база) не имеет никаких проблем с пустыми суффиксов:

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 
+0

Ой .... это противно один. Это действительно зависает мой процесс R, когда вы пытаетесь использовать пример из одной строки. Если бы я был вами, я бы сообщил об ошибке. – thelatemail

+0

Ой, я думал, что там был честно предупрежден, отредактирован. Отчет об ошибках - хорошая идея, спасибо. – stephematician

+1

В настоящее время отслеживается здесь https://github.com/hadley/dplyr/issues/2228 – manotheshark

ответ

4

Это было весело, когда я наткнулся на эту ошибку. Нижеследующее достижения желаемого эффекта с помощью 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(.)))