Existe uma maneira de imprimir texto e conteúdo variável na mesma linha? Por exemplo,
wd <- getwd()
print("Current working dir: ", wd)
Não consegui encontrar nada sobre a sintaxe que me permitisse fazer isso.
Existe uma maneira de imprimir texto e conteúdo variável na mesma linha? Por exemplo,
wd <- getwd()
print("Current working dir: ", wd)
Não consegui encontrar nada sobre a sintaxe que me permitisse fazer isso.
Respostas:
Você pode usar paste
comprint
print(paste0("Current working dir: ", wd))
ou cat
cat("Current working dir: ", wd)
cat()
I get a NULL
no final :(
print(cat("test", var))
o que deveria sercat("test", var)
{glue} oferece uma interpolação de cordas muito melhor, veja minha outra resposta . Além disso, como Dainis menciona,
sprintf()
não é sem problemas.
Há também sprintf()
:
sprintf("Current working dir: %s", wd)
Para imprimir na saída do console, use cat()
ou message()
:
cat(sprintf("Current working dir: %s\n", wd))
message(sprintf("Current working dir: %s\n", wd))
sprintf
não imprime, apenas formata a sequência. Algo como print (sprintf (...)) é necessário dentro dos scripts.
Ou usando message
message("Current working dir: ", wd)
A resposta do @ agstudy é a mais adequada aqui
A maneira mais fácil de fazer isso é usar paste()
> paste("Today is", date())
[1] "Today is Sat Feb 21 15:25:18 2015"
paste0()
resultaria no seguinte:
> paste0("Today is", date())
[1] "Today isSat Feb 21 15:30:46 2015"
Observe que não há separador padrão entre a cadeia ex. Usar um espaço no final da string é uma solução rápida:
> paste0("Today is ", date())
[1] "Today is Sat Feb 21 15:32:17 2015"
Em seguida, combine uma das funções com 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"
Como outros usuários declararam, você também pode usar cat()
O pacote {glue} oferece interpolação de strings. No exemplo, {wd}
é substituído pelo conteúdo da variável Expressões complexas também são suportadas.
library(glue)
wd <- getwd()
glue("Current working dir: {wd}")
#> Current working dir: /tmp/RtmpteMv88/reprex46156826ee8c
Criado em 2019-05-13 pelo pacote reprex (v0.2.1)
Observe como a saída impressa não contém os [1]
artefatos e as "
aspas, para os quais outras respostas são usadas cat()
.
Como outros usuários disseram, cat () é provavelmente a melhor opção.
@krlmlr sugeriu o uso de sprintf () e atualmente é a terceira resposta classificada. sprintf () não é uma boa ideia. Da documentação do R:
A string de formato é transmitida para a função sprintf do sistema operacional e formatos incorretos podem causar o último travamento do processo R.
Não há uma boa razão para usar sprintf () sobre gato ou outras opções.
sep = ''
ou terá um espaço extra.