Есть ли способ напечатать текст и переменное содержимое в одной строке? Например,
wd <- getwd()
print("Current working dir: ", wd)
Я не мог найти ничего о синтаксисе, который позволил бы мне сделать это.
Есть ли способ напечатать текст и переменное содержимое в одной строке? Например,
wd <- getwd()
print("Current working dir: ", wd)
Я не мог найти ничего о синтаксисе, который позволил бы мне сделать это.
Ответы:
Вы можете использовать paste
сprint
print(paste0("Current working dir: ", wd))
или cat
cat("Current working dir: ", wd)
cat()
я получаю NULL
в конце :(
print(cat("test", var))
что должно бытьcat("test", var)
{клей} предлагает гораздо лучшую интерполяцию строк, см. мой другой ответ . Также, как справедливо отмечает Дайнис,
sprintf()
не без проблем.
Там также sprintf()
:
sprintf("Current working dir: %s", wd)
Чтобы распечатать на выход консоли, используйте cat()
или message()
:
cat(sprintf("Current working dir: %s\n", wd))
message(sprintf("Current working dir: %s\n", wd))
sprintf
не печатает, он просто форматирует строку. Что-то вроде print (sprintf (...)) необходимо внутри скриптов.
Или используя message
message("Current working dir: ", wd)
Ответ @ agstudy здесь больше подходит
Самый простой способ сделать это - использовать paste()
> paste("Today is", date())
[1] "Today is Sat Feb 21 15:25:18 2015"
paste0()
приведет к следующему:
> paste0("Today is", date())
[1] "Today isSat Feb 21 15:30:46 2015"
Обратите внимание, что между строкой и x нет разделителя по умолчанию. Использование пробела в конце строки - это быстрое решение:
> paste0("Today is ", date())
[1] "Today is Sat Feb 21 15:32:17 2015"
Затем объедините любую функцию с print()
> print(paste("This is", date()))
[1] "This is Sat Feb 21 15:34:23 2015"
Или
> print(paste0("This is ", date()))
[1] "This is Sat Feb 21 15:34:56 2015"
Как заявили другие пользователи, вы также можете использовать cat()
Пакет {glue} предлагает интерполяцию строк. В этом примере {wd}
подставляется содержимое переменной. Сложные выражения также поддерживаются.
library(glue)
wd <- getwd()
glue("Current working dir: {wd}")
#> Current working dir: /tmp/RtmpteMv88/reprex46156826ee8c
Создано 2019-05-13 пакетом представлением (v0.2.1)
Обратите внимание, что печатный вывод не содержит [1]
артефактов и "
кавычек, для которых используются другие ответы cat()
.
Как говорили другие пользователи, cat (), вероятно, лучший вариант.
@krlmlr предложил использовать sprintf (), и в настоящее время это третий по счету ответ. sprintf () не очень хорошая идея. Из документации R:
Строка формата передается в функцию sprintf операционной системы, и неправильные форматы могут привести к сбою последнего процесса R.
Нет веских причин использовать sprintf () поверх cat или других опций.
sep = ''
или вы получите дополнительное место.