Skip to content

Strange bug when using long strings in crossing with tribbles/tibbles inside #1037

@kendonB

Description

@kendonB

I find a strange bug when using long strings and logical variables. The example may not be minimal but I also demonstrate several simplifications for which the function works.

library(tidyverse)
# Bug
crossing(
  tribble(~a, ~b,
          "a", TRUE,
          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", TRUE),
  tribble(~c, ~d,
          "a", TRUE,
          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", TRUE)
)
#> Error: Column name `tribble(...)` must not be duplicated.

# Bug
crossing(
  tibble(a = c("a", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
         b = c(TRUE, TRUE)),
  tibble(c = c("a", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
         d = c(TRUE, TRUE))
)
#> Error: Column name `tibble(...)` must not be duplicated.

# Works removing one "a"
crossing(
  tribble(~a, ~b,
          "a", TRUE,
          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", TRUE),
  tribble(~c, ~d,
          "a", TRUE,
          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa", TRUE)
)
#> # A tibble: 4 x 4
#>   a                              b     c                             d    
#>   <chr>                          <lgl> <chr>                         <lgl>
#> 1 a                              TRUE  a                             TRUE 
#> 2 a                              TRUE  aaaaaaaaaaaaaaaaaaaaaaaaaaaaa TRUE 
#> 3 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa TRUE  a                             TRUE 
#> 4 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa TRUE  aaaaaaaaaaaaaaaaaaaaaaaaaaaaa TRUE

# Works if one of the logical columns is character
crossing(
  tribble(~a, ~b,
          "a", TRUE,
          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", TRUE),
  tribble(~c, ~d,
          "a", "a",
          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "a")
)
#> # A tibble: 4 x 4
#>   a                              b     c                              d    
#>   <chr>                          <lgl> <chr>                          <chr>
#> 1 a                              TRUE  a                              a    
#> 2 a                              TRUE  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a    
#> 3 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa TRUE  a                              a    
#> 4 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa TRUE  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a

# works if one is tibble and the other tribble
crossing(
  tibble(a = c("a", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
         b = c(TRUE, TRUE)),
  tribble(~c, ~d,
          "a", TRUE,
          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", TRUE)
)
#> # A tibble: 4 x 4
#>   a                              b     c                              d    
#>   <chr>                          <lgl> <chr>                          <lgl>
#> 1 a                              TRUE  a                              TRUE 
#> 2 a                              TRUE  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa TRUE 
#> 3 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa TRUE  a                              TRUE 
#> 4 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa TRUE  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa TRUE

Created on 2020-09-04 by the reprex package (v0.3.0)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugan unexpected problem or unintended behaviorgrids #️⃣expanding, nesting, crossing, ...

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions