Skip to content

unite throws error when trying to unite all columns if column selection is left empty #355

Closed

Description

@meow9th

The documentation for unite implies that unite can be used to unite all columns if column selection is left empty:

A selection of columns. If empty, all variables are selected.

However, when attempting to do so, an error is thrown:

tidyr::unite(mtcars, 'all_cols')

Results in:

Error in if (!after) c(values, x) else if (after >= lengx) c(x, values) else c(x[1L:after],  : 
  missing value where TRUE/FALSE needed

When all columns are specified explicitly, no error is thrown:

tidyr::unite(mtcars, 'all_cols', mpg:carb)

Results in:

                                                   all_cols
Mazda RX4               21_6_160_110_3.9_2.62_16.46_0_1_4_4
Mazda RX4 Wag          21_6_160_110_3.9_2.875_17.02_0_1_4_4
Datsun 710            22.8_4_108_93_3.85_2.32_18.61_1_1_4_1
Hornet 4 Drive      21.4_6_258_110_3.08_3.215_19.44_1_0_3_1
Hornet Sportabout    18.7_8_360_175_3.15_3.44_17.02_0_0_3_2
Valiant              18.1_6_225_105_2.76_3.46_20.22_1_0_3_1
Duster 360           14.3_8_360_245_3.21_3.57_15.84_0_0_3_4
Merc 240D              24.4_4_146.7_62_3.69_3.19_20_1_0_4_2
Merc 230             22.8_4_140.8_95_3.92_3.15_22.9_1_0_4_2
Merc 280            19.2_6_167.6_123_3.92_3.44_18.3_1_0_4_4
Merc 280C           17.8_6_167.6_123_3.92_3.44_18.9_1_0_4_4
Merc 450SE          16.4_8_275.8_180_3.07_4.07_17.4_0_0_3_3
Merc 450SL          17.3_8_275.8_180_3.07_3.73_17.6_0_0_3_3
Merc 450SLC           15.2_8_275.8_180_3.07_3.78_18_0_0_3_3
Cadillac Fleetwood   10.4_8_472_205_2.93_5.25_17.98_0_0_3_4
Lincoln Continental    10.4_8_460_215_3_5.424_17.82_0_0_3_4
Chrysler Imperial   14.7_8_440_230_3.23_5.345_17.42_0_0_3_4
Fiat 128              32.4_4_78.7_66_4.08_2.2_19.47_1_1_4_1
Honda Civic         30.4_4_75.7_52_4.93_1.615_18.52_1_1_4_2
Toyota Corolla       33.9_4_71.1_65_4.22_1.835_19.9_1_1_4_1
Toyota Corona       21.5_4_120.1_97_3.7_2.465_20.01_1_0_3_1
Dodge Challenger     15.5_8_318_150_2.76_3.52_16.87_0_0_3_2
AMC Javelin          15.2_8_304_150_3.15_3.435_17.3_0_0_3_2
Camaro Z28           13.3_8_350_245_3.73_3.84_15.41_0_0_3_4
Pontiac Firebird    19.2_8_400_175_3.08_3.845_17.05_0_0_3_2
Fiat X1-9              27.3_4_79_66_4.08_1.935_18.9_1_1_4_1
Porsche 914-2          26_4_120.3_91_4.43_2.14_16.7_0_1_5_2
Lotus Europa        30.4_4_95.1_113_3.77_1.513_16.9_1_1_5_2
Ford Pantera L        15.8_8_351_264_4.22_3.17_14.5_0_1_5_4
Ferrari Dino          19.7_6_145_175_3.62_2.77_15.5_0_1_5_6
Maserati Bora           15_8_301_335_3.54_3.57_14.6_0_1_5_8
Volvo 142E            21.4_4_121_109_4.11_2.78_18.6_1_1_4_2

Related StackOverflow question

Activity

  1. SteadyGiant commented on Sep 5, 2017

    @SteadyGiant

    I'm having the same issue. Running unite(data = vars, col = name, sep = " ") throws this exact error. But running unite(data = vars, col = name, V1:V6, sep = " "), where V1:V6 are column names of the vars tibble, runs without error and returns the desired output. ?unite documentation explicitly states that the ... argument can be left empty and, if so, unite() will select all variables.

  2. abautistah commented on Oct 11, 2017

    @abautistah

    Yeah same problem, trying to leave ... argument empty to use all columns but it is not working. Instead I got all colnames and used it as argument.

    columnNames <- colnames(data)
    unitedData <- data%>%unite(united, columNames ,sep=".")

  3. added
    bugan unexpected problem or unintended behavior
    on Nov 15, 2017
  4. added a commit that references this issue on Nov 16, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugan unexpected problem or unintended behavior

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions