Imprimir string e conteúdo variável na mesma linha em R


198

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.

r  printing 

Respostas:


299

Você pode usar pastecomprint

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

ou cat

cat("Current working dir: ", wd)

8
Você provavelmente quer sep = ''ou terá um espaço extra.
Hadley

8
Usando cat()I get a NULLno final :(
ragesz 13/06

5
@ragesz i só obter nulo no final, se você colocar o interior gato de uma impressão de como: print(cat("test", var)) o que deveria sercat("test", var)
Spidfire

62

{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))

Outra boa opção! Isso é muito semelhante a outras linguagens de script e muito conveniente se você tiver um texto em que deseja implementar várias variáveis. Obrigado!

1
de longe a opção mais conveniente, especialmente se você estiver compondo um argumento de função. com colar rapidamente se torna uma bagunça ilegível.
user27636

2
Observe que sprintfnão imprime, apenas formata a sequência. Algo como print (sprintf (...)) é necessário dentro dos scripts.
CHS

22

Ou usando message

message("Current working dir: ", wd)

A resposta do @ agstudy é a mais adequada aqui


17

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()


14

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().


8

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.


2

você pode usar o método paste0 ou cat para combinar string com valores variáveis ​​em R

Por exemplo:

paste0("Value of A : ", a)

cat("Value of A : ", a)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.