2017-08-17 2 views
3

Cela semble une question facile, mais je n'ai pas trouvé la réponse. J'ai un vecteur de caractère contenant les noms des arguments d'un appel. Dans une fonction, je voudrais donner un avertissement si certains d'entre eux sont faux, et citer les noms.Citer les noms dans les avertissements

bad = c("a", "b", "c") 
warning(paste("Variables", paste(bad, collapse = ", "), "are wrong")) 

qui donne:

Warning message: 
Variables a, b, c are wrong 

mais j'ai besoin:

Warning message: 
Variables 'a', 'b', 'c' are wrong 

Je voudrais y parvenir sans l'utilisation d'emballages externes.

Répondre

8

Nous pouvons utiliser ASCII apostrop il \'

warning(paste("Variables", paste0("\'", bad, "\'", collapse = ", "), "are wrong")) 

# Warning message: 
# Variables 'a', 'b', 'c' are wrong 

Ou un guillemet simple par sQuote

warning(paste("Variables", paste(sQuote(bad), collapse = ", "), "are wrong")) 

# Warning message: 
# Variables ‘a’, ‘b’, ‘c’ are wrong 

Ou un guillemet par dQuote

warning(paste("Variables", paste(dQuote(bad), collapse = ", "), "are wrong")) 

# Warning message: 
# Variables “a”, “b”, “c” are wrong 
+0

C'est propre, mais je n'utiliser des guillemets gauche/droite dans un Attention. Cependant, je ne voudrais pas ajouter de citations du tout. – Roland

+0

@Roland Merci, édité ma réponse, cependant, l'utilisation dépend de l'utilisateur. –

1

Est-ce ce que vous cherchez?

bad = c("'a'", "'b'", "'c'") 
warning(paste("Variables", paste(bad, collapse = ", "), "are wrong")) 

si vous voulez économiser quelques secondes, vous pouvez écrire quelque chose comme

quotify <- function(x) paste0("'", x, "'") 

bad = quotify(c("a", "b", "c")) 
warning(paste("Variables", paste(bad, collapse = ", "), "are wrong")) 
4

Vous pouvez utiliser cette approche:

warning("Variables ", paste0("'", bad, "'", collapse = ", "), " are wrong") 
# Warning message: 
# Variables 'a', 'b', 'c' are wrong 

Version alternative pour des guillemets doubles:

warning("Variables ", paste0("\"", bad, "\"", collapse = ", "), " are wrong") 
# Warning message: 
# Variables "a", "b", "c" are wrong