En développant un paquet R, je voudrais utiliser R
's message()
ou warning()
fonctions pour produire la sortie pour mon utilisateur de paquet.Comment formatez-vous les messages du paquet R multiligne?
Parfois, ces messages peuvent être longs. Je peux le faire (le texte est tout exemple trivial):
message("If you got to this point in the code, it means the matrix was empty. Calculation continues but you should consider re-evaluating an earlier step in the process")
Grande ... Mais pour le style, je veux aussi que mes lignes de code à moins de 80 caractères, ils se rangent bien dans les écrans étroits , sur GitHub, etc. Et puis je peux utiliser un outil de refusion de code IDE pour reformater mon message facilement s'il change.
J'essayez ceci:
message("If you got to this point in the code, it means
the matrix was empty. Calculation continues but you should consider
re-evaluating an earlier step in the process")
Cela résout mes critères de code - il est inférieur à 80 lignes de caractères et peut refusion comme prévu. Mais qui colle le droit des espaces dans ma sortie de message, que je ne veux pas non:
If you got to this point in the code, it means
the matrix was empty. Calculation continues but you should consider
re-evaluating an earlier step in the process
Je trouve cette fonction pratique appelée strwrap()
qui semble résoudre le problème:
message(strwrap("If you got to this point in the code, it means
the matrix was empty. Calculation continues but you should consider
re-evaluating an earlier step in the process"))
sortie:
If you got to this point in the code, it means the matrix was empty.
Calculation continues but you should considerre-evaluating an earlier
step in the process
l'air bien - mais il a éliminé l'espace entre « considérer » et « réévaluer » parce que l'espace était à une nouvelle ligne.
Une autre alternative est de le casser en morceaux dans le code:
message("If you got to this point in the code, it means ",
"the matrix was empty. Calculation continues but you should consider ",
"re-evaluating an earlier step in the process")
Cela rend la REGARDEZ correcte, mais le texte ne peut plus refusion facilement avec IDE, etc, parce que ce n'est pas une chaîne, donc cela ne fonctionne pas pour moi du côté des développeurs. Donc, comment puis-je faire un message bien formaté qui me permet d'écrire le message facilement à travers les lignes?
J'ai écrit cette fonction:
.nicemsg = function(...) {
message(paste(strwrap(...), collapse="\n"))
}
Y at-il une meilleure façon en utilisant un haut-donc je n'ai pas inclure cette fonction dans chaque paquet de R j'écris?
'un message ne fait (strwrap (..., prefix = "", initial = "")) 'fais ce dont tu as besoin? – Benjamin
@Benjamin Oui, merci. Malheureusement, il n'est pas beaucoup plus concis que ma fonction, donc je vais toujours besoin de l'envelopper ... – nsheff
@Benjamin puisqu'il n'y a pas eu d'autres réponses, si vous postez cela comme une réponse, je vais l'accepter. – nsheff