我过去主要使用paste
或paste0
作为我的粘贴任务,但我对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"
感兴趣:sprintf
与paste
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
答案 0 :(得分: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格式打印整数和字符串。