Multidplyr - предупреждение: group_indices_.grouped_df игнорирует дополнительные аргументы - PullRequest
0 голосов
/ 14 июня 2019

Недавно я начал использовать multidplyr для ускорения вычислений на больших наборах данных и получения предупреждающего сообщения, в котором раньше я его не видел при использовании стандартного dplyr.Предупреждение появляется в первом случае вызова mutlidplyr, а затем не появляется снова, если не запущен новый сеанс R.Несмотря на то, что предупреждение не нарушает код, я хотел бы знать, что его вызывает и как его можно удалить.

Многие источники, обсуждающие эту ошибку, ссылаются на отсутствие самой последней версии multidplyr и dplyr, установленной какпричина предупреждения.Убедившись, что оба обновления были обновлены, предупреждение все еще возникает.

Некоторые считают, что предупреждение исходит от вызова partition () и group_by (), а не от того, что все переменные группировки передаются вызову partition ().Убедившись, что для моего кода это не так, появляется предупреждение.

Вот воспроизводимый пример, основанный на моем использовании multidplyr в реальном проекте, с предупреждением, включенным там, где оно появляетсяпосле запуска кода.Количество строк выбрано так, чтобы этот пример выполнялся достаточно быстро, но у фреймов данных, с которыми я часто работаю, было больше, до 8 миллионов.Число столбцов и классы фрейма данных представляют эти обычные фреймы данных.Внизу отображается информация о моей сессии.

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, запустить пример кода и не показывать предупреждение.Любая помощь будет принята с благодарностью!

...