46

我正在寻找如何在 r 中执行 printf,即我想输入:

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

并获得与键入相同的输出:

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

我已阅读以下链接:

...所以我知道我可以使用cat("hello", 56),这可能就是我会做的,但只是想知道是否有一些快捷的写作方式print(sprintf(...))

对不起,如果这个问题是重复的(我不知道)。搜索“printf r”非常困难,因为它返回的结果是 php、c、...

4

4 回答 4

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

外部invisible调用可能是不必要的,我不是 100% 清楚它是如何工作的。

于 2012-10-23T03:54:53.533 回答
19

我的解决方案:

> 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"
于 2014-02-09T05:30:39.197 回答
4

如果您想要一个执行 print(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"
于 2012-10-23T03:54:48.043 回答
0

我这样做:

printf = function(s, ...) cat(paste0(sprintf(s, ...)), '\n')
于 2015-04-09T20:12:49.980 回答