0

当我将 distinct() 与 dtplyr 一起使用时,我的数据表将转换为带有新列“.keep_all”的小标题。我通过运行 install.packages() 然后 update.packages() 更新了我正在使用的所有包,只是为了更好地衡量。我还更新了 RStudio 和 R。包更新和在网上搜索解决方案都没有奏效。任何帮助,将不胜感激!

这是我正在使用一些可重现的代码所做的示例:

library(tidyr)
library(plyr)
library(dplyr)
library(data.table)
library(dtplyr)

dt <- data.table(A = c("a", "a", "b", "b", "b"), 
                 B = c(1, 2, 1, 2, 2), 
                 C = rnorm(5, 0, 1))
dt %>% select(-C) %>% group_by(A,B) %>% distinct()

Source: local data table [4 x 3]
Groups: A, B

# A tibble: 4 x 3
      A     B .keep_all
  <chr> <dbl>     <lgl>
1     a     1     FALSE
2     a     2     FALSE
3     b     1     FALSE
4     b     2     FALSE

如果我不加载 dtplyr,相同的代码将返回我想要的:

Source: local data table [4 x 2]
Groups: A, B

      A     B
  (chr) (dbl)
1     a     1
2     a     2
3     b     1
4     b     2

这是我的 sessionInfo()

R version 3.4.0 (2017-04-21)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 14.04.5 LTS

Matrix products: default
BLAS: /usr/lib/atlas-base/atlas/libblas.so.3.0
LAPACK: /usr/lib/lapack/liblapack.so.3.0

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods  
[7] base     

other attached packages:
[1] data.table_1.10.4 dplyr_0.5.0       plyr_1.8.3       
[4] tidyr_0.6.3       dtplyr_0.0.2      MASS_7.3-44      

loaded via a namespace (and not attached):
 [1] compiler_3.4.0  lazyeval_0.1.10 magrittr_1.5   
 [4] R6_2.1.1        assertthat_0.1  DBI_0.6-1      
 [7] tools_3.4.0     tibble_1.3.1    Rcpp_0.12.11   
[10] rlang_0.1.1 
4

0 回答 0