Multidplyr-警告消息:group_indices_.grouped_df忽略多余的参数

时间:2019-06-13 23:18:40

标签: r dplyr multidplyr

我最近开始使用multidplyr来加快大型数据集的计算速度,并收到一条警告消息,以前我在使用标准dplyr时看不到该消息。该警告出现在第一次调用mutlidplyr的实例上,然后除非再次启动R的新会话,否则不会再次出现。即使警告并没有破坏代码,我也想知道是什么原因引起的以及如何将其删除。

许多讨论此错误的消息人士均未安装multidplyr和dplyr的最新版本作为警告原因。确保两者都是最新的之后,仍然会发出警告。

有人援引警告来自调用partition()和group_by(),而不是将所有分组变量都提供给partition()调用。确保我的代码不是这种情况后,仍然会出现警告。

这是一个可复制的示例,该示例基于我在实际项目中对multidplyr的使用,并在运行代码后显示警告消息。选择行数是为了使此示例运行得相当快,但是我经常使用的数据帧却有多达800万个。数据帧的列数和类别表示那些常用数据帧。在底部,显示我的会话信息。

library(foreach)
library(dplyr)
library(multidplyr)
library(parallel)
library(doParallel)

set.seed(1)
rows = 20000
cols = 9

cluster <- makeCluster(11)
registerDoParallel(cluster)

tmpData <- as.data.frame(foreach(i = 1:rows, .combine = "rbind") %dopar% {
  c(sample(c("CCCCCC","OOOO"),1),
    as.character(sample(c(5000:7000),1)),
    as.character(sample(c(5000:7000),1)),
    as.numeric(sample(c(2000:3000),1)),
    as.numeric(sample(c(2000:3000),1)),
    as.numeric(sample(c(25000000:25000033),1)),
    sample(c(1:25),1),
    sample(c(60:1800),1),
    sample(c(1:100),1))
})
stopCluster(cluster)
colnames(tmpData) <- c("V1","V2","V3","V4","V5","V6","V7","V8","V9")
rownames(tmpData) <- NULL
tmpData$V1 <- as.character(tmpData$V1)
tmpData$V2 <- as.character(tmpData$V2)
tmpData$V3 <- as.character(tmpData$V3)
tmpData$V4 <- as.numeric(levels(tmpData$V4)[tmpData$V4])
tmpData$V5 <- as.numeric(levels(tmpData$V5)[tmpData$V5])
tmpData$V6 <- as.numeric(levels(tmpData$V6)[tmpData$V6])
tmpData$V7 <- as.integer(levels(tmpData$V7)[tmpData$V7])
tmpData$V8 <- as.numeric(levels(tmpData$V8)[tmpData$V8])
tmpData$V9 <- as.numeric(levels(tmpData$V9)[tmpData$V9])

cluster <- create_cluster(11)
createdDF <- tmpData %>%
  partition(V6, V2, V3, V5, V4, cluster = cluster) %>%
  summarize(Data1 = sum(V7), Data2 = sum(V8), Data3 = n()) %>%
  collect()

# Warning message:
# group_indices_.grouped_df ignores extra arguments 

stopCluster(cluster)

sessionInfo()
# R version 3.5.1 (2018-07-02)
# Platform: x86_64-redhat-linux-gnu (64-bit)
# Running under: CentOS Linux 7 (Core)
# 
# Matrix products: default
# BLAS/LAPACK: /usr/lib64/R/lib/libRblas.so
# 
# locale:
# [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               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    LC_PAPER=en_US.UTF-8       LC_NAME=C                 
# [9] LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
# 
# attached base packages:
#   [1] parallel  stats     graphics  grDevices utils     datasets  methods   base     
# 
# other attached packages:
#   [1] doParallel_1.0.14     iterators_1.0.10      multidplyr_0.0.0.9000 dplyr_0.8.0.1         foreach_1.4.4        
# 
# loaded via a namespace (and not attached):
# [1] Rcpp_1.0.1       codetools_0.2-16 crayon_1.3.4     assertthat_0.2.1 R6_2.4.0         magrittr_1.5     pillar_1.3.1    
# [8] rlang_0.3.3      lazyeval_0.2.2   rstudioapi_0.10  tools_3.5.1      glue_1.3.1       purrr_0.3.2      yaml_2.2.0      
# [15] compiler_3.5.1   pkgconfig_2.0.2  tidyselect_0.2.5 tibble_2.1.1    

我希望能够开始一个新的R会话,运行示例代码,并且不出现警告。任何帮助将不胜感激!

0 个答案:

没有答案