dans R, puis-je arrêter d'impression(cat(“”)) à partir de retourner NULL? et pourquoi le chat(“foo”) return foo>
Si je entrer
print(cat(""))
- Je obtenir
NULL
Je veux utiliser cat()
d'imprimer la progression d'un script R, mais je ne comprends pas pourquoi il est de retour NULL
à la fin de tous mes chaînes concaténées, et plus important encore, comment le faire arrêter?
Pourriez-vous s'il vous plaît ajouter quelques précisions? Comment êtes-vous exécuter ce script R (par exemple, via
Rscript
, source()
, etc)? Où voulez-vous imprimer le cours (par exemple, la console, un fichier)?cat("foo")
renvoie foo>
parce que vous avez oublié d'ajouter un saut de ligne à la fin de votre chaîne. R est-ce que vous demandez et imprime la chaîne "foo"
et imprime ensuite l'invite >
. Essayez cat("foo\n")
par exemple, ou mieux, writeLines("foo")
. J'ai mis quelques exemples de ces derniers dans ma réponse.OriginalL'auteur David LeBauer | 2010-10-29
Vous devez vous connecter pour publier un commentaire.
Toutes vos réponses sont fournies dans la documentation de
?cat
. Les portions de répondre à une question particulière sont:... et ...
De sorte que vous ne pouvez pas arrêter de
print(cat(...))
de retourNULL
parce que c'est cecat
retourne. Et vous devez explicitement ajouter des retours à la ligne commecat("foo\n")
.Eh bien, la documentation peut être laconique et
print
etcat
peut sembler comme ils le font des choses similaires. Maiscat
ne pas de retour de la chaîne fournie, imprime. Subtile, mais importante, de la différence. C'est aussi une bonne pratique de coup d'œil sur les pages de documentation pour les fonctions dans la section "Voir Aussi".comme mentionné dans la réponse à @gunkster, je ne pense pas que je peux obtenir les sauts de ligne avec de la pâte() ...
vous pouvez obtenir des retours à la ligne si vous insérez:
cat(paste("foo","fi","\n","\n","bar\n"))
ouwriteLines(paste("foo","fi","\n","\n","bar\n"))
par exemple. Ou voir ma réponse à une manière de l'aidestrwrap()
etwriteLines()
pour gérer l'emballage dans une belle façon propre.vous n'avez pas besoin de deux
cat(paste(...))
.cat
sépare automatiquement les arguments avec un espace... ce qui économise de la frappe. 😉OriginalL'auteur Joshua Ulrich
J'ai eu exactement le même problème. En un mot,
cat()
est un peu bancale en vertu de R. Vous n'avez pas entrer dans les détails à propos de la façon dont vous essayez d'utilisercat()
mais je suggère de regarder àpaste()
.?paste
Je pense que c'est peut être ce que vous cherchez.
J'ai commencé avec de la pâte() de la fonction, mais je ne pouvais pas le faire ajouter des sauts de ligne, et le chat() a été recommandé à moi lorsque j'ai demandé à la r-help liste sur les sauts de ligne : tolstoy.newcastle.edu.au/R/e12/help/10/10/0104.html
un
paste()
version de l'exemple de R-message d'aide serait:writeLines(paste("msg1","msg2", sep = "\n"))
. D'une version à l'aide decat()
n'est pas si agréable que vous devez ajouter un supplément de"\n"
:cat(paste("msg1","msg2","\n", sep = "\n"))
oucat(paste("msg1","msg2", sep = "\n"), "\n")
de très bons conseils...
OriginalL'auteur Choens
NULL est la valeur de retour de "chat()". Si vous omettez l'extérieur "print()" vous ne verrez pas la valeur NULL.
OriginalL'auteur d11
Je ne vois pas la nécessité d'utiliser
print(cat())
. Pour imprimer un messagecat()
est déjà suffisant. C'est peut être ce que vous cherchez:OriginalL'auteur MasterJedi
Pour cela, j'utilise souvent
writeLines()
, en combinaison avecstrwrap()
, etpaste()
de combiner dire que la boucle de la valeur si je suis l'impression d'info sur l'itération en cours.strwrap()
poignées emballage de longues lignes que nécessaire, etwriteLines()
signifie que je n'ai pas de souvenir d'ajouter un"\n"
sur la fin de moncat()
appels.Voici un exemple de l'utiliser pour imprimer une itération de l'indicateur:
Donne:
OriginalL'auteur Gavin Simpson
Si vous souhaitez affecter à une variable, pour une utilisation dans une BOUCLE de *appliquer ou de la fonction (x), essayez ceci:
Le nom de la variable, l' ".y" ajoute une corde à cela, collez dit à imprimer, eval évalue l'impression, <- l'affecte à une variable, et de la hache, c'est que variable.
OriginalL'auteur Mox