Impression de nouvelles lignes avec print () dans R

111

J'essaie d'imprimer un message multiligne dans R. Par exemple,

print("File not supplied.\nUsage: ./program F=filename",quote=0)

Je reçois la sortie

File not supplied.\nUsage: ./program F=filename

au lieu du désiré

File not supplied.
Usage: ./program F=filename
bande passante élevée
la source

Réponses:

130

Une alternative à cat()est writeLines():

> writeLines("File not supplied.\nUsage: ./program F=filename")
File not supplied.
Usage: ./program F=filename
>

Un avantage est que vous n'avez pas à vous rappeler d'ajouter un "\n"à la chaîne passée à cat()pour obtenir une nouvelle ligne après votre message. Par exemple, comparez ce qui précède à la même cat()sortie:

> cat("File not supplied.\nUsage: ./program F=filename")
File not supplied.
Usage: ./program F=filename>

et

> cat("File not supplied.\nUsage: ./program F=filename","\n")
File not supplied.
Usage: ./program F=filename
>

La raison pour laquelle print()ne fait pas ce que vous voulez est que print()vous montre une version de l'objet du niveau R - dans ce cas, il s'agit d'une chaîne de caractères. Vous devez utiliser d'autres fonctions comme cat()et writeLines()pour afficher la chaîne. Je dis «une version» parce que la précision peut être réduite dans les chiffres imprimés et que l'objet imprimé peut être augmenté d'informations supplémentaires, par exemple.

Gavin Simpson
la source
Les deux writelineset 'cat' ne semblent pas écrire dans une variable. J'essayais de créer une variable de chaîne avec plusieurs lignes. stringvar <- writeLines("line1\nline2")n'assigne pas. stringvar renvoie toujours nul. Une alternative?
sjd
25

Tu peux le faire:

cat("File not supplied.\nUsage: ./program F=filename\n")

Notez que cela cata une returnvaleur de NULL.

Shane
la source
3
Mais n'oubliez pas la nouvelle ligne de fin.
hadley
+1 @Shane J'avais besoin du chat ("\ n") pour autre chose, voir ça m'a aidé! Merci
Alos
7

L'utilisation de writeLines vous permet également de vous passer du caractère de nouvelle ligne "\ n", en utilisant c(). Un péché:

writeLines(c("File not supplied.","Usage: ./program F=filename",[additional text for third line]))

Ceci est utile si vous prévoyez d'écrire un message multiligne avec une entrée combinée fixe et variable, comme le [texte supplémentaire pour la troisième ligne] ci-dessus.

user5699217
la source
-1

Vous pouvez également utiliser une combinaison de catetpaste0

cat(paste0("File not supplied.\n", "Usage: ./program F=filename"))

Je trouve cela plus utile lors de l'incorporation de variables dans l'impression. Par exemple:

file <- "myfile.txt"
cat(paste0("File not supplied.\n", "Usage: ./program F=", file))
Mikey
la source