web-dev-qa-db-fra.com

Imprimer la chaîne et le contenu variable sur la même ligne dans R

Est-il possible d’imprimer du texte et du contenu variable sur la même ligne? Par exemple,

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

Je n'ai rien trouvé sur la syntaxe qui me permettrait de le faire.

151
user2015601

Vous pouvez utiliser paste avec print

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

ou cat

cat("Current working dir: ", wd)
237
agstudy

Il y a aussi sprintf():

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

Pour imprimer sur la sortie de la console, utilisez cat() ou message():

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

Ou en utilisant message

message("Current working dir: ", wd)

La réponse de @ agstudy est la plus appropriée ici

17
Jilber Urbina

Pour ce faire, le plus simple consiste à utiliser paste()

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

paste0() donnerait ce qui suit:

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

Notez qu'il n'y a pas de séparateur par défaut entre la chaîne et x. Utiliser un espace à la fin de la chaîne est une solution rapide:

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

Puis combinez l'une des fonctions avec print()

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

Ou

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

Comme d'autres utilisateurs l'ont déjà indiqué, vous pouvez également utiliser cat()

12
user1526693

Le paquet {glue} offre une interpolation de chaîne. Dans l'exemple, {wd} est remplacé par le contenu de la variable. Les expressions complexes sont également prises en charge.

library(glue)

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

Créé le 2019-05-13 par le paquet reprex (v0.2.1)

Notez que la sortie imprimée ne contient pas les artefacts [1] et les guillemets ", pour lesquels les autres réponses utilisent cat().

11
krlmlr

Comme d'autres utilisateurs l'ont dit, cat () est probablement la meilleure option.

@krlmlr a suggéré d'utiliser sprintf () et c'est actuellement la réponse classée au troisième rang. sprintf () n'est pas une bonne idée. De la documentation R:

La chaîne de formatage est transmise à la fonction sprintf du système d'exploitation. Des formats incorrects peuvent entraîner le blocage du processus R.

Il n'y a pas de bonne raison d'utiliser sprintf () sur chat ou d'autres options.

6
Dainis Boumber

vous pouvez utiliser la méthode paste0 ou cat pour combiner chaîne avec des valeurs variables dans R

Par exemple:

paste0("Value of A : ", a)

cat("Value of A : ", a)
0
Codemaker