折叠特征向量与sprintf的而不糊(Collapsing character vectors wi

2019-10-20 03:41发布

我主要用pastepaste0在过去我粘贴的任务,但我敢用速度着迷sprintf 。 可是我觉得,我缺少一些基本知识。

如果有也崩溃了多元素特征向量长度1为一体的方式很奇怪paste使用它的时候会做collapse的说法,那就是, 无需手动指定相应的通配符和值paste ,我干脆离开到功能的任务,找出有多少元素应该崩溃)。

x <- c("Pasted string:", "hello", "world!")

> sprintf("%s %s %s", x[1], x[2], x[3])
[1] "Pasted string: hello world!"
> paste(x, collapse=" ")
[1] "Pasted string: hello world!"

我在寻找这样的事情(伪代码)

> sprintf("<the-correct-parameter>", x)
[1] "Pasted string: hello world"

对于感兴趣的是:基准组合sprintfpaste

require("microbenchmark")
t1 <- median(microbenchmark(sprintf("%s %s %s", x[1], x[2], x[3]))$time)
t2 <- median(microbenchmark(paste(x, collapse=" "))$time)

> t1/t2
[1] 0.7273114

Answer 1:

函数sprintf的回收它的格式串,因此,例如代码

cat(sprintf("%8.4f",rnorm(5)),"\n")

打印像

-0.5685 -0.6481 0.6296 -0.0043 -1.4763

str = sprintf("%8.4f",rnorm(5))

存储在字符串矢量输出和

str_one = paste(sprintf("%8.4f",rnorm(5)),collapse='')

存储在一个字符串的输出。 格式字符串并不需要指定要打印花车的数量。 这也适用于打印整数和字符串用%d和%s格式。



文章来源: Collapsing character vectors with sprintf instead of paste