是否有可能以列表或data.frame而不是单独的向量来提供R的sprintf(fmt,...)函数?
例如,我想要实现的目标:
df <- data.frame(v1 = c('aa','bb','c'),
v2 = c('A', 'BB','C'),
v3 = 8:10,
stringsAsFactors = FALSE)
sprintf('x%02s%02s%02i', df[[1]], df[[2]], df[[3]])
[1] "xaa A08" "xbbBB09" "x c C10"
Run Code Online (Sandbox Code Playgroud)
但有一个更简洁的语法,如:
sprintf('x%02s%02s%02i', df)
Error in sprintf("x%02s%02s%02i", df) : too few arguments
Run Code Online (Sandbox Code Playgroud)
在我的实际情况中,我有更多的列来提供sprintf,使代码变得丑陋.
我想更普遍的问题是如何规避省略号...功能.
我肯定不是第一个问这个问题,但我找不到任何方向......
Sot*_*tos 10
你可以使它成为一个功能并用于do.call应用,即,
f1 <- function(...){sprintf('x%02s%02s%02i', ...)}
do.call(f1, df)
#[1] "xaa A08" "xbbBB09" "x c C10"
Run Code Online (Sandbox Code Playgroud)