Skip to content

Error in 'vec_slice()' #202

@clemencerapicault

Description

@clemencerapicault

Objective
Hello,
I have used a code to generate ComplexUpset graphics that works on my PC. I also work in a secure bubble (CAS-D), I tried to import and reproduce the same analysis in the bubble but I get an error even though the format of my data is exactly the same.
I've checked the package updates but it still doesn't work and I don't understand the error, as the format of my data is the same as on my usual PC.

This is the error I get:
Error in 'vec_slice()' :
! Can't subset elements with 'i'.
Subscript 'i' must be a simple vector, not a matrix.
Run 'rlang::last_trace()' to see where the error occurred.

Thank you in advance for your help.

Code

set_size = function(w, h, factor=1.5) {
  s = 1 * factor
  options(
    repr.plot.width=w * s,
    repr.plot.height=h * s,
    repr.plot.res=100 / factor,
    jupyter.plot_mimetypes='image/png',
    jupyter.plot_scale=1
  )
}

set_size(8, 3)
size <- get_size_mode('exclusive_intersection')
expos <- c("BorgVenn",
           "C_AQ_EXPOACT_Trrepet_01",
           "C_AQ_EXPOACT_TrOutVibr_01",
           "C_AQ_EXPOACT_TrTordPoignet_01",
           "C_AQ_EXPOACT_TrPincer_01")

BDD_finale_CC_UpsetBiomeca_hommes[expos] <- BDD_finale_CC_UpsetBiomeca_hommes[expos] == 1 | BDD_finale_CC_UpsetBiomeca_hommes[expos] == "Oui"

# Copiez le dataframe pour éviter de modifier l'original
BDD_finale_CC_UpsetBiomeca_hommes_mod <- BDD_finale_CC_UpsetBiomeca_hommes

# Renommez les colonnes pour l'affichage
colnames(BDD_finale_CC_UpsetBiomeca_hommes_mod)[colnames(BDD_finale_CC_UpsetBiomeca_hommes_mod) %in% expos] <- c(
  "Repetitive hand movements",
  "Hand-transmitted vibrations", 
  "Awkward wrist postures", 
  "Repetitive pinching",
  "High physical perceived exertion (RPE ≥12)")

expos <- c("High physical perceived exertion (RPE ≥12)", 
           "Repetitive hand movements", 
           "Hand-transmitted vibrations", 
           "Awkward wrist postures", 
           "Repetitive pinching")

# Fonction pour calculer les tailles et les pourcentages des intersections
calculate_intersection_sizes <- function(data, sets) {
  upset_data <- data %>%
    dplyr::select(all_of(sets)) %>%
    mutate(across(everything(), as.logical)) %>%
    group_by(across(everything())) %>%
    summarise(size = n(), .groups = 'drop') %>%
    ungroup()
  
  total_size <- sum(upset_data$size)
  upset_data <- upset_data %>%
    mutate(percentage = size / total_size * 100) %>%
    mutate(text_label = paste0(round(percentage, 1), "%\n(", size, ")"))
  
  return(upset_data)
}

# Calculez les tailles et les pourcentages des intersections
intersection_sizes <- calculate_intersection_sizes(BDD_finale_CC_UpsetBiomeca_hommes_mod, expos)

# Vérifiez que les pourcentages sont calculés correctement
print(intersection_sizes)

# Fonction pour générer les labels d'annotations
generate_labels <- function(size, data) {
  match_indices <- match(size, data$size)
  return(data$text_label[match_indices])
}

# Graphique avec ComplexUpset
upset_plot <- ComplexUpset::upset(
  BDD_finale_CC_UpsetBiomeca_hommes_mod, 
  expos, 
  name = 'Exposure', 
  width_ratio = 0.1, 
  min_size = 30,
  min_degree = 1,
  base_annotations = list(
    'Intersection size' = intersection_size(
      text_mapping = aes(
        label = generate_labels(!!size, intersection_sizes),
        colour = ifelse(!!size > 300, 'on_bar', 'on_background'),
        y = ifelse(!!size > 300, !!size - 300, !!size)
      )
    )
  ),
  set_sizes = (
    upset_set_size()
    + geom_text(aes(label = ..count..), hjust = 0, stat = 'count', color = 'white')
    + theme(axis.text.x = element_text(angle = 90),
            axis.ticks.x = element_line())
  )
)

# Affichez le graphique
print(upset_plot)

Context (required)

ComplexUpset version: 1.3.3

R version details
$platform
[1] "x86_64-w64-mingw32"

$arch
[1] "x86_64"

$os
[1] "mingw32"

$crt
[1] "ucrt"

$system
[1] "x86_64, mingw32"

$status
[1] ""

$major
[1] "4"

$minor
[1] "4.0"

$year
[1] "2024"

$month
[1] "04"

$day
[1] "24"

$`svn rev`
[1] "86474"

$language
[1] "R"

$version.string
[1] "R version 4.4.0 (2024-04-24 ucrt)"

$nickname
[1] "Puppy Cup"
R session information
R version 4.4.0 (2024-04-24 ucrt)
Platform: x86_64-w64-mingw32/x64
Running under: Windows Server 2019 x64 (build 17763)

Matrix products: default


locale:
[1] LC_COLLATE=French_France.1252  LC_CTYPE=French_France.1252    LC_MONETARY=French_France.1252
[4] LC_NUMERIC=C                   LC_TIME=French_France.1252   

time zone: Europe/Paris
tzcode source: internal

Metadata

Metadata

Assignees

No one assigned

    Labels

    help-requestUser requested help with the package

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions