2017-08-17 2 views
2

Dieser Code funktioniert nicht eine Spalte in tibble hinzuzufügen:add_column in tibble mit variabler Spaltennamen

library(tidyverse) 
    df <- data.frame("Oranges" = 5) 
    mycols <- c("Apples", "Bananas", "Oranges") 
    add_column(df, mycols[[2]] = 7) 

erhalte ich die Fehlermeldung:

Error: unexpected '=' in "add_column(df, mycols[[2]] =" 

Aber dieser Code funktioniert:

add_column(df, "Bananas" = 7) 

Warum?

Ich weiß nicht die Werte von 'Mycols' vor der Zeit. Deshalb habe ich meinen Code für eine Variable geschrieben. Ist das in dplry nicht möglich?

+0

'add_column' stammt aus dem 'tibble'-Paket. Bitte beachte, dass du deinen Titel bearbeiten kannst. – www

Antwort

5

Nun, add_column scheint von tibble eher als dplyr zu kommen, aber es verwendet die neue saubere Eval-Syntax. Sie können

add_column(df, !!(mycols[2]) := 7) 

Notiere die !! und := verwenden. Die := ermöglicht Ihnen die Verwendung von Variablen für Parameternamen und die !! erweitert den Ausdruck in eine Zeichenfolge.

+0

Schöne Lösung ... – Sagar

+0

Das hat funktioniert, danke. Aha !! und: = in der Hilfedatei, aber ich verstehe die Dokumentation nicht, und ich habe sie nie zuvor benutzt. Können Sie kurz angeben, was sie tun? – Joe

+1

@Joe Werfen Sie einen Blick hier: http://dplyr.tidyverse.org/articles/programming.html – MrFlick