2017-10-13 4 views
1

Je n'arrive pas à mélanger les noms de colonnes de référencement à l'aide de paramètres et directement à partir de la trame de données. S'il vous plaît aidez-moi à corriger la deuxième fonction de retourner le même résultat que la premièreUtilisation de paramètres en tant que noms de colonnes dans dplyr

install.packages("dplyr", version = "0.5.0")` 
library(dplyr) 

df <- data.frame(year = 2010:2015, GVA = 1:6) 
f <- function(df) { 
    df %>% 
    mutate(indexGVA = GVA/max(ifelse(year == 2010, GVA, 0)) * 100) 
} 
f(df) 

g <- function(df, val = NULL) { 
    df %>% 
    mutate_(indexGVA = ~val/max(ifelse(year == 2010, val, 0)) * 100) 
} 
g(df, val = "GVA") 
+0

i t donne l'erreur: Erreur dans mutate_impl (.data, dots): argument non numérique à l'opérateur binaire – Max888

Répondre

3

mutate_ est maintenant dépréciée (?mutate_), vous pouvez utiliser à la place enquo et !! de rlang citer et CITATION les arguments:

library(rlang) 
g <- function(df, val = NULL) { 
    val_quo = enquo(val) 
    df %>% 
    mutate(indexGVA = (!! val_quo)/max(ifelse(year == 2010, (!! val_quo), 0)) * 100) 
} 

g(df, val = GVA) 

Résultat:

year GVA indexGVA 
1 2010 1  100 
2 2011 2  200 
3 2012 3  300 
4 2013 4  400 
5 2014 5  500 
6 2015 6  600