2016-11-14 19 views
6

Cảnh báo công bằng: điều này có thể treo hệ điều hành của bạn.* _join có hậu tố trống

*_join() từ dplyr không thành công khi một trong hai hậu tố trái hoặc phải được chỉ định là trống (''), ví dụ:

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

Trong khi các công việc sau tốt:

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

Trong khi đó, S3 generic merge() (cơ sở) không có vấn đề với hậu tố rỗng:

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

dplyr thông tin gói:

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

Thông tin phiên bản 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

Ouch .... đó là một điều khó chịu. Nó thực sự treo quá trình R của tôi khi thử ví dụ một hàng của bạn. Tôi sẽ báo cáo một lỗi nếu tôi là bạn. – thelatemail

+0

Rất tiếc, tôi nghĩ tôi đã đặt cảnh báo công bằng ở đó, đã chỉnh sửa. báo cáo lỗi là một ý tưởng hay, cảm ơn. – stephematician

+1

Điều này hiện đang được theo dõi tại đây https://github.com/hadley/dplyr/issues/2228 – manotheshark

Trả lời

4

Điều này thật thú vị khi tôi tình cờ gặp lỗi này. Sau đây sẽ thực hiện hiệu ứng mong muốn bằng cách sử dụng dplyr của việc sử dụng các hậu tố ''.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(.))) 
Các vấn đề liên quan