2017-02-16 2 views
2

Ich versuche, eine Spalte aus gather() aus dem Tidyr-Paket mit Standardauswertung auszuschließen.Ausschließen von Spalte von Gather() aus Tidyr-Paket mit Standardauswertung

Die Verwendung von nicht-Standard-Auswertung, das funktioniert gut:

mtcars_df <- head(mtcars[, c("mpg", "hp", "cyl")]) 
tidyr::gather(mtcars_df, key, val, -cyl) 

jedoch Standardauswertung mit, weder der folgenden Arbeit und beide geben einen Fehler zurück:

tidyr::gather_(mtcars_df, "key", "val", -"cyl") 
tidyr::gather_(mtcars_df, "key", "val", -cyl) 

Als Behelfslösung habe ich versucht, die select() Helferfunktion , zu verwenden, aber dies sind gerade die ursprüngliche data.frame, mtcars_df:

tidyr::gather_(mtcars_df, "key", "val", -dplyr::contains("cyl")) 

Wie kann ich eine Spalte auf diese Weise mit Standardauswertung ausschließen? Was ist denn hier los?

+1

Es ist mehr Arbeit, aber 'mtcars_df%>% _ sammeln ('Schlüssel', 'Wert', Namen (.) [ Namen (.)! = 'cyl']) '. Es kann jedoch ein einfacheres Idiom geben. – alistaire

Antwort

3

Nach tidyr Github Ausgabe #109: gather_ no longer supports dropping a column?,

gather_() only works with character vectors. - Hadley Wickham, 2015

Sie können versuchen,

library(dplyr) 
mtcars_df %>% tidyr::gather_("key", "val", setdiff(names(.), "cyl")) 
+1

Für das Einreichen bei CRAN, wie von @Dom gezeigt, würde dies funktionieren: 'mtcars_df%>% tidyr :: gather _ (" Schlüssel "," val ", Namen (mtcars_df) [Namen (mtcars_df)! =" Cyl "]) ' –

1

Altough Ihre Problemumgehung funktioniert, erstellt es eine NOTE wenn in einem Paket verwendet:

no visible binding for global variable '.' 

Was verhindert, dass es auf CRAN veröffentlicht wird :(

Gibt es eine andere Möglichkeit, Spalte mit gather_ mit Standardauswertung auszuschließen?

Ich habe (wie die Verwendung dplyr::select_vars so) viele Dinge ausprobiert, aber nichts funktionierte ...

+1

Ich glaube, ich hatte das gleiche Problem, konnte es aber hier nicht bestätigen: Meine Lösung (ich vergesse, wie ich dazu kam, also von jemand anderem - danke! :)) war:' mtcars_df%>% tidyr :: Sammeln _ ("Schlüssel", "val", Namen (mtcars_df) [Namen (mtcars_df)! = "cyl"]) 'was sollte funktionieren, wenn in CRAN veröffentlicht –

+0

Dank @JoshuaRosenberg hat es funktioniert !!! –

Verwandte Themen