Печать новой строки с помощью print () в R


112

Я пытаюсь напечатать многострочное сообщение в R. Например,

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

Я получаю результат

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

вместо желаемого

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

Ответы:


131

Альтернативой cat()является writeLines():

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

Преимущество состоит в том, что вам не нужно помнить о добавлении a "\n"к строке, переданной в, cat()чтобы получить новую строку после вашего сообщения. Например, сравните приведенное выше с тем же cat()выводом:

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

и

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

Причина print()не в том, что вы хотите, в том, что print()показывает вам версию объекта с уровня R - в данном случае это строка символов. Для отображения строки необходимо использовать другие функции, например cat()и writeLines(). Я говорю «версия», потому что точность может быть уменьшена в печатных числах, и напечатанный объект может быть дополнен, например, дополнительной информацией.


writelinesКажется, что оба и 'cat' не записывают в переменную. Я пытался создать строковую переменную с несколькими строками. stringvar <- writeLines("line1\nline2")не назначает. stringvar по-прежнему возвращает null Любая альтернатива?
sjd

25

Ты можешь сделать это:

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

Обратите внимание, что catимеет returnзначение NULL.


3
Но не забывайте завершающую новую строку.
Хадли 01

+1 @Shane Мне нужен был кот ("\ n") для чего-то еще, это помогло! Спасибо
Алос

7

Использование writeLines также позволяет отказаться от символа новой строки "\ n", используя c(). Как в:

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

Это полезно, если вы планируете написать многострочное сообщение с комбинированным фиксированным и переменным вводом, например [дополнительный текст для третьей строки] выше.


-1

Вы также можете использовать комбинацию catиpaste0

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

Я считаю, что это более полезно при включении переменных в распечатку. Например:

file <- "myfile.txt"
cat(paste0("File not supplied.\n", "Usage: ./program F=", file))
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.