You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何修改函数...可变参数默认值?以jsonlite::stream_out为例

default包只能修改函数显式定义的参数,...是不定参数容器,没有固定参数名,所以无法直接修改,以下是几种通用的实现方案:

方法1:自定义包装函数(最推荐,无副作用)

直接封装原函数,预设你需要传入...的参数默认值,其余参数透传即可:

# 可以直接覆盖原函数名,也可以自定义新名避免和原包函数冲突
stream_out <- function(x, digits = 10, ...) {
  jsonlite::stream_out(x, digits = digits, ...)
}

修改完成后直接调用stream_out(df)就会默认输出10位小数,不需要每次手动传参。

方法2:动态修改原函数形参列表

你可以给原函数主动追加显式参数,之后就可以像修改普通参数一样设置默认值:

# 给stream_out新增digits参数并设置默认值为10
formals(stream_out) <- c(formals(stream_out), list(digits = 10))

如果仍想使用default包管理默认值,也可以先追加参数再修改:

# 先添加digits作为stream_out的显式参数
formals(stream_out) <- c(formals(stream_out), alist(digits = ))
# 再用default包修改默认值
default(stream_out) <- list(digits = 10)

方法3:用purrr::partial预绑定参数

如果你偏好函数式编程写法,可以用partial函数固定参数值:

library(purrr)
stream_out <- partial(jsonlite::stream_out, digits = 10)

后续调用时预绑定的参数会自动传入...,其余参数可以正常传递。

内容的提问来源于stack exchange,提问作者Nick Criswell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:24:04