R:深度复制函数参数

2024-02-05

考虑下面的代码

i = 3
j = i
i = 4 # j != i

然而,我想要的是

i = 3
f <- function(x, j=i) 
    x * j
i = 4
f(4) # 16, but i want it to be 12

如果您想知道为什么我要这样做,您可以考虑这段代码 - 该应用程序是一个多重递减模型。转移矩阵的对角线是该行中其他减量的总和。我想定义我需要的减量,而不是使用这些减量计算其他函数。在本例中,我只需要 uxt01 和 uxt10,并且我想从中生成函数 uxt00 和 uxt11。我想要一些可以扩展到更高维度的东西。

Qxt <- matrix(c(uxt00=function(t=0,x=0) 0,
                uxt01=function(t=0,x=0) 0.05,
                uxt10=function(t=0,x=0) 0.07
                uxt11=function(t=0,x=0) 0), 2, 2, byrow=TRUE)

Qxt.diag <- function(Qxt) {
    ndecrements <- length(Qxt[1,])
    for(index in seq(1, N, N+1)) { # 1, 4
        Qxt[[index]] <- function(t=0, x=0, i=index, N=ndecrements) {
            row <- ceiling(index/ndecr)
            row.decrements <- seq( (row - 1)*N + 1, (row)*N) 
            other.decrements <- row.decrements[which(row.decrements != i]
            -sum(unlist(lapply(Qxt.fns[[other.decrements]], 
                function(f) f(t,x))))
        }
    }
    Qxt.fns
}

这可以通过为形式参数分配默认表达式来完成j创建函数后手动:

i <- 3;
f <- function(x,j) x*j;
f;
## function(x,j) x*j
formals(f);
## $x
##
##
## $j
##
##
formals(f)$j <- i;
f;
## function (x, j = 3)
## x * j
formals(f);
## $x
##
##
## $j
## [1] 3
##
i <- 4;
f(4);
## [1] 12

这是可能的,因为 R 是一种很棒的语言,它为您提供对函数的所有三个特殊属性的完整读/写访问,它们是:

  1. 包含主体的解析树:body() https://stat.ethz.ch/R-manual/R-devel/library/base/html/body.html.
  2. 形式参数及其默认值(它们本身就是解析树):formals() https://stat.ethz.ch/R-manual/R-devel/library/base/html/formals.html.
  3. 封闭环境(用于实现闭包):environment() https://stat.ethz.ch/R-manual/R-devel/library/base/html/environment.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R:深度复制函数参数 的相关文章

随机推荐

  • Python 中 dict 类的动态运算符重载

    我有一个类可以动态重载基本算术运算符 如下所示 import operator class IshyNum def init self n self num n self buildArith def arithmetic self oth
  • 错误:ADB 退出,退出代码为 1 执行流式安装

    我在运行时收到以下错误flutter run然而 在某些项目上 在其他项目上它工作得很好 base Nusraths MacBook Pro flutter uber clone rahama flutter emulators launc
  • android webview 的自定义字体

    我在我的应用程序中使用 webview 我想使用自定义字体以波斯语显示文本 我将字体放在 asset 文件夹中 并编写了一种在 webview 中放置文本的方法 但在不支持波斯语的 api8 中 它显示未知字符而不是我的文本和支持波斯语的
  • 对不是 的直接子级的输入显示选项卡表单验证

    当未聚焦的选项卡出现验证错误时 选项卡标题应显示为红色 相反 当未聚焦的选项卡出现验证错误时 选项卡标题不会给出任何错误指示 当我使用子组件时会发生此问题 如果所有组件都是在创建 编辑级别定义的 则该选项卡将按预期变为红色 但如果存在嵌套组
  • dcast 重命名所有变量以数字开头

    所以我得到的数据如下所示 id year principal interest 1 011000600 2013 0 00 0 00 2 011000600 2014 544 03 0 00 3 011000700 2013 0 00 0
  • Java - 如果随后定义了 actionPerformed,JButton 文本就会消失

    这已经困扰我一段时间了 如果我定义setText在 JButton 上before定义setAction 文本消失 JButton test new JButton test setText test Before disappears t
  • 如何使用 Jasmine 监视匿名函数

    我正在使用 Jasmine 来测试我的角度应用程序 并希望监视匿名函数 使用角度通知服务https github com cgross angular notify https github com cgross angular notif
  • 将 SAS 数据集中的观测值读入数组

    这个问题与大型机上的 SAS 相关 尽管我相信在这种情况下没有什么区别 我有以下 SAS 数据集 Obs DATO T ALLOC T FRESP 1 19328 647 1804 2 19359 654 1797 3 19390 662
  • 如何自定义 Mini-Profiler UI

    我已经在我的 MVC 4 应用程序上安装了 Mini Profiler 它运行得非常顺利 我遇到的唯一问题是用户界面掩盖了用户界面的关键部分 我可以使用 css 在页面上移动它 但理想情况下我想让它默认为隐藏状态 并带有抽屉按钮以使其弹出
  • 自动生成我的 C++ 代码的 uml 图

    不久前 我担任 Java 编程入门课程的助教 我们使用了一个名为BlueJ http www bluej org 它有一个很好的功能 即开发文件的概述是一个轻量级的 UML 图 其中绘制了 使用 指针和继承指针 这使得可以轻松查看程序的结构
  • 查找包含任意数量的嵌套哈希和数组的哈希深处的键/值对

    Web 服务返回的哈希值包含未知数量的嵌套哈希值 其中一些包含数组 而数组又包含未知数量的嵌套哈希值 有些键不是唯一的 即存在于多个嵌套哈希中 然而 我真正关心的所有键都是唯一的 有什么办法可以给顶级哈希提供一个键 并取回它的值 即使键值对
  • 如何在 Web 应用程序中控制 iPhone 的屏幕方向

    我有一个非常基本的网页 它使用 flot 来创建canvas基于图 类似于 SO 用于声誉图的图 对于 PC 显示器 它应该正常输出 宽度 x 轴 为高度的 1 6 倍 但对于 iPhone 我希望页面默认为横向 而不是让它以 纵向 方向溢
  • 从 Snowflake 中的字符串中删除非 ASCII 字符

    如何从 Snowflake SQL 中的字符串中删除所有非 ASCII 字符 我遇到过使用 T SQL 等的解决方案 但没有关于如何在雪花中执行此操作的文章 正则表达式应该足够了 除非您考虑其他情况 select regexp replac
  • 存储凭据以供自动使用

    我已经环顾四周 由于我不是安全或加密专家 所以我仍然对如何在程序中实现加密感到困惑 我需要一台服务器来登录其 gitHub 帐户 以更新具有特殊标头的代码文件 我现在遇到的唯一难题是如何存储 检索服务器的凭据 PushOptions pus
  • 使用 Jackson 将消息从 JSON 反序列化为 POJO

    如果您在不检查消息的情况下不知道要使用什么类型的 POJO 那么如何使用 Jackson 将 JSON 文档反序列化为 POJO 有没有办法向 Jackson 注册一组 POJO 以便它可以根据消息选择一个 我试图解决的场景是通过线路接收
  • 如何在 Laravel 中将集合或自定义查询分页到 API json 中?

    我有一个复杂的查询 该查询不基于我想要对其输出进行分页的任何特定模型表 然而 Laravel 的内置分页依赖于模型和表格 如何对集合进行分页并使输出与 laravel 内置的分页输出格式匹配 我将其保存在 app Core Helpers
  • Rails 3:延迟加载与急切加载

    在 Rails 3 中 这些是相同还是不同 它们有何不同 o Appointment find 297 o service o Appointment includes service find 297 o service 我不确定 但看起
  • Scala Option 对象位于另一个 Option 对象内

    我有一个模型 其中有一些选项字段 其中包含另一个选项字段 例如 case class First second Option Second name Option String case class Second third Option
  • WiX,如何防止文件卸载,尽管我们忘记设置永久=“是”

    我们有一个用 Wix 创建的产品安装程序 其中包含一个程序包 V1 和一些配置文件 现在 我们将使用新的产品代码进行重大升级 其中旧版本的产品被卸载并且 V2 已安装 我们想要的是保存其中一个配置文件以防止卸载 因为 V2 也需要它 不幸的
  • R:深度复制函数参数

    考虑下面的代码 i 3 j i i 4 j i 然而 我想要的是 i 3 f lt function x j i x j i 4 f 4 16 but i want it to be 12 如果您想知道为什么我要这样做 您可以考虑这段代码