Nieuwe regels afdrukken met print() in R

Ik probeer een bericht met meerdere regels in R af te drukken. Bijvoorbeeld,

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

Ik krijg de uitvoer

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

in plaats van de gewenste

File not supplied.
Usage: ./program F=filename

Antwoord 1, autoriteit 100%

Een alternatief voor cat()is writeLines():

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

Een voordeel is dat u niet hoeft te onthouden om een ​​"\n"toe te voegen aan de string die is doorgegeven aan cat()om een ​​nieuwe regel na uw bericht te krijgen . bijv. vergelijk het bovenstaande met dezelfde cat()uitvoer:

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

en

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

De reden waarom print()niet doet wat je wilt, is dat print()je een versie van het object vanaf het R-niveau laat zien – in dit geval is het is een tekenreeks. U moet andere functies gebruiken, zoals cat()en writeLines()om de tekenreeks weer te geven. Ik zeg “een versie” omdat de precisie in gedrukte cijfers kan worden verminderd en het afgedrukte object kan worden uitgebreid met bijvoorbeeld extra informatie.


Antwoord 2, autoriteit 20%

U kunt dit doen:

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

Merk op dat cateen returnwaarde heeft van NULL.


Antwoord 3, autoriteit 5%

Door gebruik te maken van writeLines kunt u ook afzien van het “\n” teken voor de nieuwe regel, door c()te gebruiken. Zoals in:

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

Dit is handig als u van plan bent een bericht met meerdere regels te schrijven met gecombineerde vaste en variabele invoer, zoals de [aanvullende tekst voor de derde regel] hierboven.


Antwoord 4

Je kunt ook een combinatie van caten paste0

gebruiken

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

Ik vind dit nuttiger bij het opnemen van variabelen in de afdruk. Bijvoorbeeld:

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

Other episodes