2017-02-18 4 views
0

Wenn ich versuche, so etwas zu tun: Fragebenannte Liste vorbei cols_only()

data <- read_csv("blah.csv", 
+    n_max = 100, 
+    col_types = cols_only(list(files = "c")) 
+) 
Error: Some `col_types` are not S3 collector objects: 1 

so ist, ob es möglich ist, eine benannte Liste cols_only()

Antwort

1

Sicher, benutzen Sie einfach do.call zu Verwenden Sie die Liste als Parameter für die Funktion, z

library(readr) 

read_csv(system.file('extdata', 'mtcars.csv', package = 'readr'), # sample data from readr 
     col_types = do.call(cols_only, list(cyl = 'i'))) 

#> # A tibble: 32 × 1 
#>  cyl 
#> <int> 
#> 1  6 
#> 2  6 
#> 3  4 
#> 4  6 
#> 5  8 
#> 6  6 
#> 7  8 
#> 8  4 
#> 9  4 
#> 10  6 
#> # ... with 22 more rows 
+1

danke, das ist genau das, was ich brauchte! – Vitalijs

1

den entsprechenden Kontext der cols_only passieren Argument besteht darin, die Spalten, die Sie genau einlesen möchten, sowie den Typ, den Sie der Spalte zuweisen möchten, zu buchstabieren.

Beispiel:

data<-read_csv("blah.csv", 
    n_max=100, 
    col_types = cols_only(
       pumkins = col_factor(c("Hooligan", "Cinderella", "Big Max")), 
       weight = col_double() 
      )) 

In diesem Fall habe ich es die beiden Spalten mit den Namen Kürbisse geöffnet hatte und das Gewicht jeweils eine Art und im Falle von Kürbissen, Faktorstufen zugeordnet werden. cols_only akzeptiert eine Liste, aber die Liste wie oben formatiert. Sie können so viele oder so wenige Spaltennamen und Deskriptoren in diese Liste einfügen, wie Sie möchten.

Wenn Sie wollen einfach nur in einem Brief fallen, dann können Sie einstellen, es auf diese Weise gleich:

  c<-cols_only(
        pumkins = col_factor(c("Hooligan", "Cinderella", "Big Max")), 
        weight = col_double()) 

Dann c in gerade nach oben fallen:

data <- read_csv("blah.csv", 
      n_max = 100, 
      col_types = c) 
      )