Druk string en variabele inhoud af op dezelfde regel in R

Is er een manier om tekst en variabele inhoud op dezelfde regel af te drukken? Bijvoorbeeld,

wd <- getwd()
print("Current working dir: ", wd)

Ik kon niets vinden over de syntaxis waarmee ik dit zou kunnen doen.


Antwoord 1, autoriteit 100%

Je kunt pastegebruiken met print

print(paste0("Current working dir: ", wd))

of cat

cat("Current working dir: ", wd)

Antwoord 2, autoriteit 20%

{glue} biedt veel betere string-interpolatie, zie mijn andere antwoord. Ook, zoals Dainis terecht vermeldt, is sprintf()niet zonder problemen.

Er is ook sprintf():

sprintf("Current working dir: %s", wd)

Gebruik cat()of message()om af te drukken naar de console-uitvoer:

cat(sprintf("Current working dir: %s\n", wd))
message(sprintf("Current working dir: %s\n", wd))

Antwoord 3, autoriteit 7%

Of gebruik message

message("Current working dir: ", wd)

Het antwoord van @agstudy is hier het meest geschikt


Antwoord 4, autoriteit 5%

De eenvoudigste manier om dit te doen is door paste()

. te gebruiken

> paste("Today is", date())
[1] "Today is Sat Feb 21 15:25:18 2015"

paste0()zou resulteren in het volgende:

> paste0("Today is", date())
[1] "Today isSat Feb 21 15:30:46 2015"

Merk op dat er geen standaard scheidingsteken is tussen de tekenreeks en x. Het gebruik van een spatie aan het einde van de string is een snelle oplossing:

> paste0("Today is ", date())
[1] "Today is Sat Feb 21 15:32:17 2015"

Combineer vervolgens beide functies met print()

> print(paste("This is", date()))
[1] "This is Sat Feb 21 15:34:23 2015"

Of

> print(paste0("This is ", date()))
[1] "This is Sat Feb 21 15:34:56 2015"

Zoals andere gebruikers hebben aangegeven, kunt u ook cat()

. gebruiken


Antwoord 5, autoriteit 4%

Het {glue}-pakketbiedt string-interpolatie. In het voorbeeld wordt {wd}vervangen door de inhoud van de variabele. Complexe uitdrukkingen worden ook ondersteund.

library(glue)
wd <- getwd()
glue("Current working dir: {wd}")
#> Current working dir: /tmp/RtmpteMv88/reprex46156826ee8c

Gemaakt op 13-05-2019 door het reprex-pakket(v0.2.1)

Merk op dat de afgedrukte uitvoer niet de [1]-artefacten en de "-aanhalingstekens bevat, waarvoor andere antwoorden cat().


Antwoord 6, autoriteit 2%

Zoals andere gebruikers al zeiden, is cat() waarschijnlijk de beste optie.

@Krlmlr suggereerde het gebruik van Sprintf () en het is momenteel het derde gerangschikte antwoord. Sprintf () is geen goed idee. Van R-documentatie:

De opmaakstring wordt doorgegeven aan de Sprintf-functie van het OS en onjuiste indelingen kunnen ervoor zorgen dat de laatste het R-proces crasht.

Er is geen goede reden om Sprintf () over kat of andere opties te gebruiken.


Antwoord 7

U kunt PAST0- of CAT-methode gebruiken om tekenreeks te combineren met variabele waarden in R

Bijvoorbeeld:

paste0("Value of A : ", a)
cat("Value of A : ", a)

Antwoord 8

Een truc zou zijn om uw stuk code op te nemen in ()als deze:

(wd <- getwd())

Wat betekent dat de huidige werkdirectory is toegewezen aan wden vervolgens afgedrukt.

Other episodes