r - 列出 sprintf 的输入(绕过省略号 ... 函数)

标签 r printf ellipsis

是否可以通过某种方式向 R 的 sprintf(fmt, ...) 函数提供列表或 data.frame 而不是单独的向量?

例如,我想要实现的目标:

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"

但具有更简洁的语法,例如:

sprintf('x%02s%02s%02i', df)
Error in sprintf("x%02s%02s%02i", df) : too few arguments

在我的实际情况中,我有更多的列要提供给 sprintf,使代码变得丑陋。

我想更普遍的问题是如何绕过省略号 ... 函数。

我肯定不是第一个问这个问题的人,但我在这个方向找不到任何东西..

最佳答案

您可以将其设为函数并使用do.call来应用,即

f1 <- function(...){sprintf('x%02s%02s%02i', ...)}

do.call(f1, df)
#[1] "xaa A08" "xbbBB09" "x c C10"

关于r - 列出 sprintf 的输入(绕过省略号 ... 函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44100457/

相关文章:

javascript - 检测文本是否溢出 :ellipsis is active on input field

c - printf char 作为 c 中的十六进制

c# - 如何检测带有自动省略号的 System.Windows.Forms.Label 是否确实显示省略号?

r - 如何在 knit word 的 R markdown 中居中图像

在 R 中按组对数据表的日期范围滚动求和

c - 如何删除printf语句中的空格

c - 使用 printf 在 C 中打印 float / double 时指定精度

html - flex 元素内的 CSS 省略号

R - 为矩阵的每一行/列应用具有不同参数值的函数

reshape 数据框以将因子转换为 R 中的列