J'essaie de développer une solution réutilisable pour le problème suivant.R Application de différentes fonctions à différentes colonnes de trame de données
Je vais avoir différentes trames de données et je souhaite définir certaines fonctions de base, puis appliquer ces fonctions aux différentes colonnes de la trame de données. Le résultat serait une trame de données ayant le même nombre de lignes et de colonnes que la trame de données d'origine.
Je souhaite que cette solution soit réutilisable dans la mesure où différentes combinaisons de fonctions peuvent être appliquées à différentes trames de données.
C'est un peu difficile d'expliquer cela en mots. J'espère que le code ci-dessous rendra ce qui précède un peu plus clair.
# construct an example data frame
v_a <- c(1, 4, 8, 10, 12)
v_b <- c(4, 6, 7, 4, 3)
v_c <- c(10, 23, 45, 12, 45)
v_d <- c(12, 45, 7, 10, 5)
df <- data.frame(a = v_a, b = v_b, c = v_c, d = v_d)
# define some example functions
fn_1 <- function(x) x * 3
fn_2 <- function(x) x * 4
# assemble functions into a vector
vct_functions <- c(fn_1, fn_2, fn_1, fn_1)
# apply vector of functions to columns in a data.frame
new_df <- fn_apply_functionList(df, vct_functions)
J'espère réutiliser la solution ci-dessus telle qu'une combinaison différente des fonctions pourrait être appliquée à la même ou une trame de données différentes.
Encore une fois, ce qui suit est un extrait de code pour rendre cela plus clair.
# create another vector of functions
vct_functionsB <- c(fn_3, fn_4, fn_1, fn_2)
# apply vector of functions to columns in a data.frame
new_df <- fn_apply_functionList(another_df, vct_functions)
Toutes les idées sur une solution élégante seraient vraiment appréciées.
Si vous avez 2+ Les objets de même longueur à boucler, utilisent 'Map' ou' mapply' - 'df [] <- Map (fonction (d, f) f (d), df, fonctions vct)' par exemple. – thelatemail
Merci. Je pense que la solution Map() passe deux ensembles d'arguments à une fonction. Je veux appliquer un vecteur de n fonctions à n listes. – markthekoala