J'essaie de créer une fonction dans R qui produit un cadre de données de manière standard, mais qui permet également à l'utilisateur d'avoir les colonnes personnalisées qu'il juge nécessaires (le but est de créer un format de données pour les données paléomagnétiques, pour lesquelles il y a des informations communes que tout le monde utilise, et d'autres plus inhabituelles que l'utilisateur pourrait vouloir garder dans le format).
Cependant, je me suis rendu compte que si l'utilisateur souhaite que l'en-tête de ses données soit un préfixe de l'un des arguments définis de la fonction de formatage des données (par exemple, via l'argument 'sheep', qui est un préfixe de l'argument 'sheepc', voir l'exemple ci-dessous), la fonction l'interprète comme l'argument défini (par l'identification partielle du nom, voir http://adv-r.had.co.nz/Functions.html#lexical-scoping pour plus de détails).
Existe-t-il un moyen d'empêcher cela, ou au moins d'avertir l'utilisateur qu'il ne peut pas utiliser ce nom ?
PS : je réalise que cette question est similaire à Désactivation des noms de variables partiels dans les cadres de données de sous-ensembles mais j'aimerais éviter de jouer avec les options des futurs utilisateurs de ma fonction.
fun <- function(sheeta = 1, sheetb = 2, sheepc = 3, ...)
{
# I use the sheeta, sheetb and sheepc arguments for computations
# (more complex than shown below, but here thet are just there to give an example)
a <- sum(sheeta, sheetb)
df1 <- data.frame(standard = rep(a, sheepc))
df2 <- as.data.frame(list(...))
if(nrow(df1) == nrow(df2)){
res <- cbind(df1, df2)
return(res)
} else {
stop("Extra elements should be of length ", sheep)
}
}
fun(ball = rep(1,3))
#> standard ball
#> 1 3 1
#> 2 3 1
#> 3 3 1
fun(sheep = rep(1,3))
#> Error in rep(a, sheepc): argument 'times' incorrect
fun(sheet = rep(1,3))
#> Error in fun(sheet = rep(1, 3)) :
#> argument 1 matches multiple formal arguments