Existe-t-il un moyen d'imprimer du texte et du contenu de 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.
Existe-t-il un moyen d'imprimer du texte et du contenu de 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.
Réponses:
Vous pouvez utiliser paste
avecprint
print(paste0("Current working dir: ", wd))
ou cat
cat("Current working dir: ", wd)
cat()
j'obtiens un NULL
à la fin :(
print(cat("test", var))
qui devrait êtrecat("test", var)
{glue} offre une bien meilleure interpolation de chaînes, voir mon autre réponse . De plus, comme Dainis le mentionne à juste titre, ce
sprintf()
n'est pas sans problèmes.
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))
sprintf
cela ne s'imprime pas, il formate simplement la chaîne. Quelque chose comme print (sprintf (...)) est nécessaire dans les scripts.
Ou en utilisant message
message("Current working dir: ", wd)
La réponse de @ agstudy est la plus appropriée ici
La façon la plus simple de le faire est d'utiliser paste()
> paste("Today is", date())
[1] "Today is Sat Feb 21 15:25:18 2015"
paste0()
se traduirait par 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. L'utilisation d'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"
Combinez ensuite l'une ou l'autre fonction 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 indiqué, vous pouvez également utiliser cat()
Le package {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 package reprex (v0.2.1)
Notez que la sortie imprimée ne contient pas les [1]
artefacts et les "
guillemets, pour lesquels d'autres réponses sont utilisées cat()
.
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 troisième réponse classée. sprintf () n'est pas une bonne idée. De la documentation R:
La chaîne de format est transmise à la fonction sprintf du système d'exploitation, et des formats incorrects peuvent entraîner le blocage du processus R par ce dernier.
Il n'y a aucune bonne raison d'utiliser sprintf () sur cat ou d'autres options.
sep = ''
ou vous obtiendrez un espace supplémentaire.