Imprimindo novas linhas com print () em R


111

Estou tentando imprimir uma mensagem de várias linhas em R. Por exemplo,

print("File not supplied.\nUsage: ./program F=filename",quote=0)

Eu recebo a saída

File not supplied.\nUsage: ./program F=filename

em vez do desejado

File not supplied.
Usage: ./program F=filename

Respostas:


130

Uma alternativa para cat()é writeLines():

> writeLines("File not supplied.\nUsage: ./program F=filename")
File not supplied.
Usage: ./program F=filename
>

Uma vantagem é que você não precisa se lembrar de anexar um "\n"à string passada para cat()para obter uma nova linha após sua mensagem. Por exemplo, compare o acima com a mesma cat()saída:

> cat("File not supplied.\nUsage: ./program F=filename")
File not supplied.
Usage: ./program F=filename>

e

> cat("File not supplied.\nUsage: ./program F=filename","\n")
File not supplied.
Usage: ./program F=filename
>

A razão de print()não fazer o que você quer é print()mostrar uma versão do objeto do nível R - neste caso, é uma string de caracteres. Você precisa usar outras funções como cat()e writeLines()para exibir a string. Digo "uma versão" porque a precisão pode ser reduzida nos números impressos e o objeto impresso pode ser aumentado com informações extras, por exemplo.


Ambos writelinese 'cat` não parecem escrever para uma variável. Eu estava tentando criar uma variável de string com várias linhas. stringvar <- writeLines("line1\nline2")não atribui. stringvar retorna ainda nulo Alguma alternativa?
sjd

25

Você consegue fazer isso:

cat("File not supplied.\nUsage: ./program F=filename\n")

Observe que cattem um returnvalor de NULL.


3
Mas não se esqueça da nova linha.
hadley

+1 @Shane Eu precisava do gato ("\ n") para outra coisa, ver isso ajudou! Obrigado
Alos

7

O uso de writeLines também permite dispensar o caractere de nova linha "\ n", usando c(). Como em:

writeLines(c("File not supplied.","Usage: ./program F=filename",[additional text for third line]))

Isso é útil se você planeja escrever uma mensagem de várias linhas com entrada combinada fixa e variável, como o [texto adicional para a terceira linha] acima.


-1

Você também pode usar uma combinação de catepaste0

cat(paste0("File not supplied.\n", "Usage: ./program F=filename"))

Acho isso mais útil ao incorporar variáveis ​​na impressão. Por exemplo:

file <- "myfile.txt"
cat(paste0("File not supplied.\n", "Usage: ./program F=", file))
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.