The problem:
I tried to run a function (ggwithinplot) to plot data in an r package, ggstatsplot. But it took a long time to run this function, and nothing turned out.
So I shut down this function while it was running. I tried waiting. It didn't work. So this problem was not a time issue.
After that, I was wondering whether it was due to that I got a large number of data points (N=2000). So I tried another sample that includes 250 data points. And this time, I got this error: "ERROR: Names must be unique."
ERROR: Names must be unique. Backtrace:
1. ggstatsplot::ggwithinstats(...)
27. vctrs:::validate_unique(names = names)
28. vctrs:::stop_names_must_be_unique(which(duplicated(names)))
29. vctrs:::stop_names(...)
30. vctrs:::stop_vctrs(...)
And I checked traceback:
33.stop(fallback)
32.signal_abort(cnd)
31.abort(message, class = c(class, "vctrs_error"), ...)
30.stop_vctrs(message, class = c(class, "vctrs_error_names"), locations = locations, ...)
29.stop_names("Names must be unique.", class = "vctrs_error_names_must_be_unique", locations = locations)
28.stop_names_must_be_unique(which(duplicated(names)))
27.validate_unique(names = names)
26.vctrs::vec_as_names(names, repair = "check_unique")
25.withCallingHandlers(expr, simpleError = function(cnd) { abort(conditionMessage(cnd), parent = cnd) })
24.instrument_base_errors(expr)
23.doTryCatch(return(expr), name, parentenv, handler)
22.tryCatchOne(expr, names, parentenv, handlers[[1L]])
21.tryCatchList(expr, classes, parentenv, handlers)
20.tryCatch(instrument_base_errors(expr), vctrs_error_subscript = function(cnd) { cnd$subscript_action <- subscript_action(type) cnd$subscript_elt <- "column" cnd_signal(cnd) ...
19.with_subscript_errors(vctrs::vec_as_names(names, repair = "check_unique"))
18.rename_impl(NULL, .vars, quo(c(...)), strict = .strict)
17.tidyselect::vars_rename(names(.data), !!!enquos(...))
16.rename.data.frame(.data = ., variable = skim_variable)
15.dplyr::rename(.data = ., variable = skim_variable)
14.function_list[[k]](value)
13.withVisible(function_list[[k]](value))
12.freduce(value, `_function_list`)
11.`_fseq`(`_lhs`)
10.eval(quote(`_fseq`(`_lhs`)), env, env)
9.eval(quote(`_fseq`(`_lhs`)), env, env)
8.withVisible(eval(quote(`_fseq`(`_lhs`)), env, env))
7.dplyr::left_join(x = df_results %>% dplyr::group_modify(.f = ~tibble::as_tibble(skimr::skim(purrr::keep(.x = ., .p = ..f))), keep = FALSE) %>% dplyr::ungroup(x = .), y = dplyr::tally(df_results), by = purrr::map_chr(.x = grouping.vars, .f = rlang::as_string)) %>% dplyr::mutate(.data = ., n = n - n_missing) %>% purrr::set_names(x = ., ...
6.groupedstats::grouped_summary(data = data, grouping.vars = { { x } ...
5.eval(lhs, parent, parent)
4.eval(lhs, parent, parent)
3.groupedstats::grouped_summary(data = data, grouping.vars = { { x } ...
2.mean_labeller(data = data, x = { { x } ...
1.ggwithinstats(data = emotion_rating_dt_50, x = variable, y = Emotion_rating, point.path = FALSE, mean.path = FALSE, effsize.type = "partial_eta", p.adjust.method = "fdr", ggtheme = theme_classic(), palette = "Darjeeling2", package = "wesanderson", ggstatsplot.layer = FALSE, xlab = "Dilemma types"
What I have tried:
- I googled about this error. Did not get much helpful information.
- I updated r-base and all r packages. Not worked.
- I checked whether this problem was specific to ggwithinplot. And I found ggbetweenplot worked well even in the large sample (N=2000).
- I checked whether it was due to problems with the input data, which is required to be long-format. I did not find anything dubious.
- I checked whether the names of columns in the data frame duplicated. No. So I was really confused about the meaning of "name must be unique."
reprex
library("tidyverse")
library("ggstatsplot")
#> Registered S3 methods overwritten by 'broom.mixed':
#> method from
#> augment.lme broom
#> augment.merMod broom
#> glance.lme broom
#> glance.merMod broom
#> glance.stanreg broom
#> tidy.brmsfit broom
#> tidy.gamlss broom
#> tidy.lme broom
#> tidy.merMod broom
#> tidy.rjags broom
#> tidy.stanfit broom
#> tidy.stanreg broom
#> Registered S3 methods overwritten by 'car':
#> method from
#> influence.merMod lme4
#> cooks.distance.influence.merMod lme4
#> dfbeta.influence.merMod lme4
#> dfbetas.influence.merMod lme4
library("bruceR")
#> 载入需要的程辑包:rio
#> 载入需要的程辑包:data.table
#>
#> 载入程辑包:'data.table'
#> The following objects are masked from 'package:dplyr':
#>
#> between, first, last
#> The following object is masked from 'package:purrr':
#>
#> transpose
#> 载入需要的程辑包:psych
#>
#> 载入程辑包:'psych'
#> The following objects are masked from 'package:ggplot2':
#>
#> %+%, alpha
#> 载入需要的程辑包:lubridate
#>
#> 载入程辑包:'lubridate'
#> The following objects are masked from 'package:data.table':
#>
#> hour, isoweek, mday, minute, month, quarter, second, wday, week,
#> yday, year
#> The following object is masked from 'package:base':
#>
#> date
#> 载入需要的程辑包:performance
#> Registered S3 methods overwritten by 'huge':
#> method from
#> plot.sim BDgraph
#> print.sim BDgraph
#> Registered S3 method overwritten by 'GGally':
#> method from
#> +.gg ggplot2
#> ========================================================
#> BRoadly Useful Collections and Extensions of R functions
#> ========================================================
#> Loaded packages:
#> <U+2714> bruceR (version 0.4.0)
#> <U+2714> rio, dplyr, data.table, psych, stringr, lubridate, performance, ggplot2
#> Update:
#> devtools::install_github("psychbruce/bruceR")
#> Citation:
#> Bao, H.-W.-S. (2020). bruceR: Broadly useful collections and extensions of R functions (version 0.4.0). Retrieved from https://github.com/psychbruce/bruceR
data <- import("E:/Zengxiaoyu/zxy_projcet/!ncov/data/Covid_Q1Q2data_minus200_0316.xlsx")
#> New names:
#> * hubei -> hubei...1396
data$hubei<-data$hubei...666
data$hubei <- as.factor(data$hubei)
#data frame
emotion_df <- data.frame(data$N1_disself,data$N1_disFAMI,data$N1_disHB,data$hubei)
emotion_df <- as.data.table(emotion_df)
#data preparation for repeated measure
long_emotion_rating_dt<-tidyr::pivot_longer(emotion_df, 1:3,names_to = 'variable', values_to = "Emotion_rating")
emotion_rating_dt_50<-subset(long_emotion_rating_dt,data.hubei=="HuBei")
# to plot
grid::grid.newpage()
ggwithinstats(
data = emotion_rating_dt_50,
x = variable, # > 2 groups
y = Emotion_rating,
point.path = FALSE,
mean.path = FALSE,
effsize.type = 'partial_eta' ,
p.adjust.method = "fdr",
ggtheme = theme_classic(),
palette = "Darjeeling2",
package = "wesanderson",
ggstatsplot.layer = FALSE,
xlab = "Dilemma types",
ylab = "Emotion rating(1=appealing,7=appaling)",
title = "Emotion rating for fout types moral dilemmas"
)
#> Note: 95% CI for effect size estimate was computed with 100 bootstrap samples.
#>
#> Error: Names must be unique.
Created on 2020-03-17 by the reprex package (v0.3.0)
data farame
session info
R version 3.6.3 (2020-02-29)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 15063)
Matrix products: default
locale:
[1] LC_COLLATE=Chinese (Simplified)_China.936 LC_CTYPE=Chinese (Simplified)_China.936
[3] LC_MONETARY=Chinese (Simplified)_China.936 LC_NUMERIC=C
[5] LC_TIME=Chinese (Simplified)_China.936
attached base packages:
[1] splines stats4 stats graphics grDevices utils datasets methods base
other attached packages:
[1] sessioninfo_1.1.1 reprex_0.3.0 reshape_0.8.8 gginnards_0.0.3 VGAM_1.1-2 parameters_0.6.0
[7] nnet_7.3-13 openxlsx_4.1.4 summarytools_0.9.6 ggcorrplot_0.1.3 bruceR_0.4.0 performance_0.4.4
[13] lubridate_1.7.4 psych_1.9.12.31 data.table_1.12.8 rio_0.5.16 ggstatsplot_0.3.1 forcats_0.5.0
[19] stringr_1.4.0 dplyr_0.8.5 purrr_0.3.3 readr_1.3.1 tidyr_1.0.2 tibble_2.1.3
[25] ggplot2_3.3.0 tidyverse_1.3.0 drawMap_0.1.0
loaded via a namespace (and not attached):
[1] estimability_1.3 GGally_1.4.0 lavaan_0.6-5 coda_0.19-3
[5] acepack_1.4.1 knitr_1.28 multcomp_1.4-12 rpart_4.1-15
[9] inline_0.3.15 generics_0.0.2 callr_3.4.2 cowplot_1.0.0
[13] TH.data_1.0-10 xml2_1.2.5 httpuv_1.5.2 StanHeaders_2.21.0-1
[17] assertthat_0.2.1 d3Network_0.5.2.1 WRS2_1.0-0 xfun_0.12
[21] hms_0.5.3 evaluate_0.14 promises_1.1.0 fansi_0.4.1
[25] dbplyr_1.4.2 readxl_1.3.1 igraph_1.2.4.2 htmlwidgets_1.5.1
[29] DBI_1.1.0 Rsolnp_1.16 ellipsis_0.3.0 paletteer_1.1.0
[33] rcompanion_2.3.25 backports_1.1.5 pbivnorm_0.6.0 insight_0.8.2
[37] rapportools_1.0 libcoin_1.0-5 jmvcore_1.2.5 vctrs_0.2.4
[41] sjlabelled_1.1.3 abind_1.4-5 withr_2.1.2 pryr_0.1.4
[45] metaBMA_0.6.2 checkmate_2.0.0 bdsmatrix_1.3-4 emmeans_1.4.5
[49] fdrtool_1.2.15 prettyunits_1.1.1 fastGHQuad_1.0 mnormt_1.5-6
[53] cluster_2.1.0 mi_1.0 crayon_1.3.4 pkgconfig_2.0.3
[57] nlme_3.1-145 statsExpressions_0.3.1 palr_0.2.0 pals_1.6
[61] rlang_0.4.5 lifecycle_0.2.0 miniUI_0.1.1.1 groupedstats_0.2.0
[65] skimr_2.1 LaplacesDemon_16.1.4 MatrixModels_0.4-1 sandwich_2.5-1
[69] kutils_1.69 EMT_1.1 modelr_0.1.6 dichromat_2.0-0
[73] tcltk_3.6.3 cellranger_1.1.0 matrixStats_0.56.0 broomExtra_2.5.0
[77] lmtest_0.9-37 Matrix_1.2-18 regsem_1.5.2 loo_2.2.0
[81] mc2d_0.1-18 carData_3.0-3 boot_1.3-24 zoo_1.8-7
[85] base64enc_0.1-3 whisker_0.4 processx_3.4.2 png_0.1-7
[89] viridisLite_0.3.0 rjson_0.2.20 oompaBase_3.2.9 pander_0.6.3
[93] ggExtra_0.9 afex_0.26-0 multcompView_0.1-8 coin_1.3-1
[97] arm_1.10-1 jpeg_0.1-8.1 rockchalk_1.8.144 ggsignif_0.6.0
[101] scales_1.1.0 magrittr_1.5 plyr_1.8.6 compiler_3.6.3
[105] rstantools_2.0.0 bbmle_1.0.23.1 RColorBrewer_1.1-2 lme4_1.1-21
[109] cli_2.0.2 lmerTest_3.1-1 pbapply_1.4-2 ps_1.3.2
[113] TMB_1.7.16 Brobdingnag_1.2-6 htmlTable_1.13.3 Formula_1.2-3
[117] MASS_7.3-51.5 mgcv_1.8-31 tidyselect_1.0.0 stringi_1.4.6
[121] lisrelToR_0.1.4 sem_3.1-9 jtools_2.0.2 OpenMx_2.17.3
[125] latticeExtra_0.6-29 ggrepel_0.8.2 bridgesampling_1.0-0 grid_3.6.3
[129] tools_3.6.3 parallel_3.6.3 matrixcalc_1.0-3 rstudioapi_0.11
[133] foreign_0.8-76 gridExtra_2.3 ipmisc_1.2.0 pairwiseComparisons_0.2.5
[137] BDgraph_2.62 digest_0.6.25 shiny_1.4.0.2 nortest_1.0-4
[141] jmv_1.2.5 Rcpp_1.0.3 car_3.0-7 broom_0.5.5
[145] metafor_2.1-0 ez_4.4-0 BayesFactor_0.9.12-4.2 metaplus_0.7-11
[149] later_1.0.0 httr_1.4.1 effectsize_0.2.0 sjstats_0.17.9
[153] colorspace_1.4-1 rvest_0.3.5 XML_3.99-0.3 fs_1.3.2
[157] truncnorm_1.0-8 rematch2_2.1.0 expm_0.999-4 mapproj_1.2.7
[161] jcolors_0.0.4 MuMIn_1.43.15 xtable_1.8-4 jsonlite_1.6.1
[165] nloptr_1.2.2.1 corpcor_1.6.9 rstan_2.19.3 glasso_1.11
[169] zeallot_0.1.0 modeltools_0.2-23 scico_1.1.0 R6_2.4.1
[173] Hmisc_4.3-1 broom.mixed_0.2.4 pillar_1.4.3 htmltools_0.4.0
[177] mime_0.9 glue_1.3.2 fastmap_1.0.1 minqa_1.2.4
[181] codetools_0.2-16 maps_3.3.0 pkgbuild_1.0.6 mvtnorm_1.1-0
[185] lattice_0.20-40 numDeriv_2016.8-1.1 huge_1.3.4 curl_4.3
[189] DescTools_0.99.34 gtools_3.8.1 clipr_0.7.0 magick_2.3
[193] logspline_2.1.15 zip_2.0.4 survival_3.1-11 rmarkdown_2.1
[197] qgraph_1.6.5 repr_1.1.0 munsell_0.5.0 semPlot_1.1.2
[201] sjmisc_2.8.3 haven_2.2.0 reshape2_1.4.3 gtable_0.3.0
[205] bayestestR_0.5.2
Github issue for this problem:
I got this error because there were two identical variable names in my data set. Once I renamed one of them, the error was resolved.