Tidyr: Warnen, wenn keine Verschachtelungsvariablen für nicht gruppierte Eingaben angegeben sind

Erstellt am 13. Aug. 2019  ·  5Kommentare  ·  Quelle: tidyverse/tidyr

Entdeckt über ein Revdep-Gespräch https://github.com/Thie1e/cutpointr/issues/22#issuecomment -521002505

Fühlt sich so an, als ob nest() , ohne dass verschachtelte Variablen angegeben sind, bei einer nicht gruppierten Eingabe eine Variation der Warnung erzeugen sollte, die für unbenannte Elemente von ... angezeigt wird.

library(tidyr)

packageVersion("tidyr")
#> [1] '0.8.99.9000'

nest(iris, Sepal.Length, Sepal.Width, Petal.Length, Petal.Width, Species)
#> Warning: All elements of `...` must be named.
#> Did you want `data = c(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width, Species)`?
#> # A tibble: 1 x 1
#>             data
#>   <list<df[,5]>>
#> 1      [150 × 5]

nest(iris)
#> # A tibble: 1 x 1
#>             data
#>   <list<df[,5]>>
#> 1      [150 × 5]

Erstellt am 13.08.2019 vom Reprex-Paket (v0.3.0.9000)

bug rectangling

Hilfreichster Kommentar

@bedantaguru Ihr Beispiel ist anders und ist ein Fall, der bereits behandelt wurde. Ihr Beispiel gibt an, dass wir "alles außer Species " verschachteln. Dieses Problem betrifft nest() Aufrufe, die überhaupt keine Spezifikation enthalten.

Um es klar zu sagen, diese Warnung ist beabsichtigt und die Tatsache, dass unpivotr sie auslöst, bedeutet, dass unpivotr die Art und Weise anpassen muss, wie es nest() für dev dirtyr aufruft. Es ist derzeit jedoch nicht in unserem Revdep-Check markiert, also lassen Sie mich @nacnudus direkt

Alle 5 Kommentare

Mehr Beweise für die Ansicht, dass nest(iris) warnen sollte. Wir warnen vor der parallelen, inversen Situation, in der unnest(df) mit leerem ... aufgerufen wird.

library(tidyr)

packageVersion("tidyr")
#> [1] '0.8.99.9000'

df <- nest(iris, data = everything())
unnest(df)
#> Warning: `cols` is now required.
#> Please use `cols = c(data)`
#> # A tibble: 150 x 5
#>    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#>           <dbl>       <dbl>        <dbl>       <dbl> <fct>  
#>  1          5.1         3.5          1.4         0.2 setosa 
#>  2          4.9         3            1.4         0.2 setosa 
#>  3          4.7         3.2          1.3         0.2 setosa 
#>  4          4.6         3.1          1.5         0.2 setosa 
#>  5          5           3.6          1.4         0.2 setosa 
#>  6          5.4         3.9          1.7         0.4 setosa 
#>  7          4.6         3.4          1.4         0.3 setosa 
#>  8          5           3.4          1.5         0.2 setosa 
#>  9          4.4         2.9          1.4         0.2 setosa 
#> 10          4.9         3.1          1.5         0.1 setosa 
#> # … with 140 more rows

Erstellt am 13.08.2019 vom Reprex-Paket (v0.3.0.9000)

Dies hängt auch damit zusammen, dass wir hier genauere Worte husten: https://github.com/tidyverse/tidyr/commit/908da2c91fa1f169319b40640dad68e9c9e139b0#commitcomment -34644640

Es ist nicht wirklich zutreffend, dies als Zurückhaltung zu beschreiben, ... für Metadaten zu verwenden. Es mag die Verwendung von ... , um das Nichts zu absorbieren, was dann implizit eine andere Bedeutung bekommt ("alles" oder "alle Listenspalten" oder was haben Sie).

Stehe hier vor dem gleichen Problem 😢.

Tatsächlich passiert es (zumindest mir bekannt) in einem der abhängigen Pakete https://github.com/nacnudus/unpivotr/issues/26

Auf der CRAN-Version

require(tidyr)
#> Loading required package: tidyr

"Repository" %in% desc::desc(package = "tidyr")$fields()
#> [1] TRUE

desc::desc(package = "tidyr")$get_field("Repository")
#> [1] "CRAN"

packageVersion("tidyr")
#> [1] '0.8.3'

iris %>% nest(-Species, .key = "attr")
#> # A tibble: 3 x 2
#>   Species    attr             
#>   <fct>      <list>           
#> 1 setosa     <tibble [50 x 4]>
#> 2 versicolor <tibble [50 x 4]>
#> 3 virginica  <tibble [50 x 4]>

Erstellt am 19.08.2019 vom Reprex-Paket (v0.3.0)

Mit Dev-Version

# after  
# devtools::install_github("tidyverse/tidyr")
require(tidyr)
#> Loading required package: tidyr

# not in cran
# desc::desc(package = "tidyr")$get_field("Repository")
"Repository" %in% desc::desc(package = "tidyr")$fields()
#> [1] FALSE

packageVersion("tidyr")
#> [1] '0.8.99.9000'

iris %>% nest(-Species, .key = "attr")
#> Warning: All elements of `...` must be named.
#> Did you want `attr = c(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width)`?
#> # A tibble: 3 x 2
#>   Species              attr
#>   <fct>      <list<df[,4]>>
#> 1 setosa           [50 x 4]
#> 2 versicolor       [50 x 4]
#> 3 virginica        [50 x 4]
iris %>% nest(-Species, attr = c(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width))
#> Warning: All elements of `...` must be named.
#> Did you want `data = c(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width)`?
#> # A tibble: 3 x 2
#>   Species              data
#>   <fct>      <list<df[,4]>>
#> 1 setosa           [50 x 4]
#> 2 versicolor       [50 x 4]
#> 3 virginica        [50 x 4]
# this is fine
iris %>% nest(attr = c(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width))
#> # A tibble: 3 x 2
#>   Species              attr
#>   <fct>      <list<df[,4]>>
#> 1 setosa           [50 x 4]
#> 2 versicolor       [50 x 4]
#> 3 virginica        [50 x 4]

Erstellt am 19.08.2019 vom Reprex-Paket (v0.3.0)

@bedantaguru Ihr Beispiel ist anders und ist ein Fall, der bereits behandelt wurde. Ihr Beispiel gibt an, dass wir "alles außer Species " verschachteln. Dieses Problem betrifft nest() Aufrufe, die überhaupt keine Spezifikation enthalten.

Um es klar zu sagen, diese Warnung ist beabsichtigt und die Tatsache, dass unpivotr sie auslöst, bedeutet, dass unpivotr die Art und Weise anpassen muss, wie es nest() für dev dirtyr aufruft. Es ist derzeit jedoch nicht in unserem Revdep-Check markiert, also lassen Sie mich @nacnudus direkt

Das ist super einfach geworden 😬 also hätte ich es wohl nicht so lange aufschieben sollen

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

moodymudskipper picture moodymudskipper  ·  5Kommentare

yuanwxu picture yuanwxu  ·  3Kommentare

yusuzech picture yusuzech  ·  3Kommentare

romagnolid picture romagnolid  ·  8Kommentare

georgevbsantiago picture georgevbsantiago  ·  6Kommentare