粘贴的替代功能

Mad*_*Seb 19 string r function

是否有可以替代粘贴的功能?我想知道R中是否存在这样的事情:

> buildString ( "Hi {1}, Have a very nice {2} ! " , c("Tom", "day") )
Run Code Online (Sandbox Code Playgroud)

Jos*_*ien 25

frankc和DWin指出你是正确的sprintf().

如果由于某种原因,您的替换部件确实将采用矢量(即c("Tom", "day"))的形式,您可以使用do.call()它们将它们传递给sprintf():

string <- "Hi %s, Have a really nice %s!"
vals   <- c("Tom", "day")

do.call(sprintf, as.list(c(string, vals)))
# [1] "Hi Tom, Have a really nice day!"
Run Code Online (Sandbox Code Playgroud)


Gre*_*now 21

sprintf函数是其他人提到的一种方法,这是使用该gsubfn包的另一种方法:

> library(gsubfn)
> who <- "Tom"
> time <- "day"
> fn$paste("Hi $who, have a nice $time")
[1] "Hi Tom, have a nice day"
Run Code Online (Sandbox Code Playgroud)


fra*_*nkc 18

我想你正在寻找sprintf.

特别:

sprintf("Hi %s, Have a very nice %s!","Tom","day")
Run Code Online (Sandbox Code Playgroud)

  • 阅读帮助文件是作弊! (7认同)
  • 特别是`sprintf("Hi%s,有一个非常好的%s!","Tom","day")`(填入*vector*值会有点棘手) (4认同)
  • 什么值得`sprintf`在*参见*?paste`(!!)部分 (3认同)
  • 有帮助文件? (3认同)

jve*_*ani 17

whisker方案做得非常好,值得更广泛的赞赏:

require(whisker)
whisker.render ( "Hi {{name}}, Have a very nice {{noun}} ! " , list(name="Tom", noun="day") )
Run Code Online (Sandbox Code Playgroud)