当我将 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