考虑这个函数plus_x:

y <- 1

plus_x <- function(input, x = y){
  return(input + x)
}

在这里,xy默认值在函数调用期间进行计算.

y <- 1

plus_x <- function(input, x = y){
  return(input + x)
}

y <-10

plus_x(1)
# > 11

有没有办法将y的值"固定"到函数定义期间的状态?

目标:

y <- 1

plus_x <- function(input, x = y){
  # y is now always 1
  return(input + x)
}

y <-10

plus_x(1)
# > 2

推荐答案

可以使用as.function定义函数,以便在构建函数时计算默认值.

y <- 1

plus_x <- as.function(list(input = NULL, x = y, quote({
  return(input + x)
  })))

plus_x(1)
#> [1] 2

y <-10

plus_x(1)
#> [1] 2

R相关问答推荐

如何求解arg必须为NULL或deSolve包的ode函数中的字符向量错误

在不安装软件包的情况下测试更新

为什么在ggplot2中添加geom_text这么慢?

S用事件解决物质平衡问题

移除仪表板Quarto中顶盖和车身之间的白色区域

在ggplot2中更改小提琴情节的顺序

对于变量的每个值,仅 Select 包含列表中所有值的值.R

在GG图中绘制射线的自动程序

从多个可选列中选取一个值到一个新列中

R中Gamma回归模型均方误差的两种计算方法不一致

在ggplot2上从多个数据框创建复杂的自定义图形

为R中的16组参数生成10000个样本的有效方法是什么?

构建一个6/49彩票模拟系统

如何调整一个facet_work()面板内的框图和移动标签之间的水平宽度?

如何从嵌套数据中自动创建命名对象?在R中

按组使用dummy r获取高于标准的行的平均值

如何使用ggplot2根据绘图中生成的斜率对小平面进行排序?

带有Bootswatch Cerulean主题的shiny 仪表板中的浏览&按钮可见性问题

如何在GGPlot中控制多个图例和线型

Ggplot2水平线和垂直线的图例图标不匹配