为了生成一个具有某种 struct 的markdown文档,

"Name and ID: %s Authors: %s Date of revision: %s"? 

并绕过了

我试过了

reduce(as.list(letters[1:3]),sprintf,fmt="%s %s %s")

如果不起作用,就会抛出错误

Error in fn(out, elt, ...) : too few arguments

我还以为

[1] "a b c"

自那以后

reduce(as.list(letters[1:2]),sprintf,fmt="%s %s")

作品和输出

[1] "a b"
> sessionInfo()
> R version 4.3.2 (2023-10-31 ucrt)
> Platform: x86_64-w64-mingw32/x64 (64-bit)
> Running under: Windows 10 x64 (build 19045)

Matrix products: default

locale:
\[1\] LC_COLLATE=English_United States.utf8  LC_CTYPE=English_United States.utf8    LC_MONETARY=English_United States.utf8
\[4\] LC_NUMERIC=C                           LC_TIME=English_United States.utf8

time zone: Europe/Paris
tzcode source: internal

attached base packages:
\[1\] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
\[1\] purrr_1.0.2

loaded via a namespace (and not attached):
\[1\] compiler_4.3.2    magrittr_2.0.3    cli_3.6.2         tools_4.3.2       rstudioapi_0.15.0 vctrs_0.6.5       lifecycle_1.0.4   rlang_1.1.3

> 

推荐答案

如果需要reduce,您可以使用fmt="%s %s"来达到您想要的结果:

library(purrr)

reduce(
  as.list(letters[1:3]),
  sprintf,
  fmt = "%s %s"
)
#> [1] "a b c"

来自DOCS(?purrr::reduce)的函数.f应该是

...一个双参数函数.该函数将传递累加值作为第一个参数,并将"Next"值作为第二个参数传递.

因此,对于您的示例,reduce将向sprintf传递两个参数,第一个参数是上一步的累加值,第二个参数是字母列表中的下一个值.但是,当您指定一个带有3个参数的格式字符串时,您会得到一个错误.

R相关问答推荐

如果窗口在CLARME或集团之外,则有条件领先/滞后滚动总和返回NA

将带有范围的字符串转换为R中的数字载体

在ggplot Likert条中添加水平线

Tidyverse/Djirr为从嵌套列表中提取的列名赋值的解决方案

使用gggrassure减少地块之间的空间

如果行和大于值,则过滤

derrr summarise每个组返回多行?

用预测NLS处理R中生物学假设之上的误差传播

如何直接从Fortran到R的数组大小?

如何在格子中添加双曲曲线

R函数‘paste`正在颠倒其参数的顺序

矩阵的堆叠条形图,条形图上有数字作为标签

R:从geom_ol()中删除轮廓并导出为pdf

R -在先前group_by级别汇总时获取最大大小子组的计数

将全局环境变量的名称分配给列表中的所有元素

将摘要图添加到facet_WRAP gglot的末尾

带RStatix的Wilcoxon环内检验

如何在Quarto中使用美人鱼图表中的标记来加粗文本

为什么在POSIXct-times的向量上循环会改变R中的类型?

如何在R曲线图弹出窗口中更改r和theta标签