怎么做r中的printf?

Hug*_*ins 41 r

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

printf("hello %d\n", 56 )
Run Code Online (Sandbox Code Playgroud)

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

print(sprintf("hello %d\n", 56 )
Run Code Online (Sandbox Code Playgroud)

我已阅读以下链接:

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

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

zwo*_*wol 30

printf <- function(...) invisible(print(sprintf(...)))
Run Code Online (Sandbox Code Playgroud)

外部invisible呼叫可能是不必要的,我不是100%清楚它是如何工作的.

  • 为了补充这一点,对于未来的新手:可以将此定义添加到〜/ .Rprofile,然后它将自动出现在所有新会话中. (8认同)
  • 是否需要了解是否看不见以及它在这里做什么? (2认同)
  • 我发现我最好做一个`cat(sprintf(...))`-不需要隐藏或打印。 (2认同)

sta*_*010 17

我的解决方案

> printf <- function(...) cat(sprintf(...))
> printf("hello %d\n", 56)
hello 56
Run Code Online (Sandbox Code Playgroud)

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"
Run Code Online (Sandbox Code Playgroud)

  • 我*做*,但OP*显式*要求一个函数,它会给它们与`print(sprintf("hello%d \n",56)`相同​​的输出,这不是`cat()`或者字符串上的`writeLines()`产生.文字`\n`是R如何表示字符串的表示方式.Catting给出字符串,而不是R表示.给你添加这个,用"snark",年在问答开始后,与OP想要的内容明显矛盾,我不明白为什么这里的-1不合适.你可能花了时间更好地整理问题.但你更喜欢小气. (2认同)