Подтвердить что ты не робот

Как сделать printf в r?

Я ищу, как делать printf в r, т.е. хочу набрать:

printf("hello %d\n", 56 )

и получите тот же результат, что и ввод:

print(sprintf("hello %d\n", 56 )

Я прочитал следующие ссылки:

... поэтому я знаю, что могу использовать cat("hello", 56), и, вероятно, что я буду делать, но просто интересно, есть ли какой-нибудь ярлык для написания print(sprintf(...))?

Извините, если этот вопрос является дубликатом (я не знаю). Очень сложно найти "printf r", так как он возвращает результаты для php, c,...

4b9b3361

Ответ 1

printf <- function(...) invisible(print(sprintf(...)))

Внешний вызов invisible может быть ненужным, я не на 100% не понимаю, как это работает.

Ответ 2

Мое решение:

> printf <- function(...) cat(sprintf(...))
> printf("hello %d\n", 56)
hello 56

Ответы, данные Zack и mnel, печатают символ возврата каретки как литерал. Не круто.

> printf <- function(...) invisible(print(sprintf(...)))
> printf("hello %d\n", 56)
[1] "hello 56\n"
> 
> printf <- function(...)print(sprintf(...))
> printf("hello %d\n", 56)
[1] "hello 56\n"

Ответ 3

Если вам нужна функция, которая печатает (sprintf (...)), определите функцию, которая делает это.

printf <- function(...)print(sprintf(...))


printf("hello %d\n", 56)
## [1] "hello 56\n"
 d <- printf("hello %d\n", 56)
## [1] "hello 56\n"
d
## [1] "hello 56\n"

Ответ 4

Я делаю так:

printf = function(s, ...) cat(paste0(sprintf(s, ...)), '\n')