如何将表达式插入到R中的函数体中

2024-03-01

我有一个函数f <- function(x){x}。我想插入该行x <- 2*x into f这样它最终会变成

function(x){
    x <- 2*x
    x
}

我明白我应该使用body(),但到目前为止我只知道如何替换entire身体,这对于我的真正目的来说并不实用。


这是另一种方法(使用magrittr简化事情)

f <- function(x){x}
f(2)
# [1] 2
# library(magrittr)
body(f) <- body(f) %>% as.list %>% append(quote(x<-2*x), 1) %>% as.call
f(2)
# [1] 4

或者甚至简单地

body(f) %<>% as.list %>% append(quote(x<-2*x), 1) %>% as.call %>% as.expression

但我觉得我可能缺少一种更简单的方法

您可以编写一个更传统的函数,而无需magrittr还有...

funins <- function(f, expr = expression(x<-2*x), after=1) {
    body(f)<-as.call(append(as.list(body(f)), expr, after=after))
    f
}

您可以使用它来插入任何表达式

f <- function(x){x}
g <- funins(f, expression(print("hi"), x<-3*x))
f(2)
# [1] 2
g(2)
# [1] "hi"
# [1] 6
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将表达式插入到R中的函数体中 的相关文章

随机推荐

  • Java中人工生成cpu负载

    有没有一种简单的方法可以在 Java 中生成恒定的 CPU 负载 就像生成 60 的 CPU 负载一样 有点晚了 但只是想分享我创建了一个名为的小型开源客户端库FakeLoad https github com msigwart fakel
  • jQuery 在 DOM 中获取特定元素之后的下一个匹配项

    我不愿意承认这一点 但我一直在努力弄清楚如何做到这一点 例如假设您具有以下结构 div div ul li a href img class foo a li li a href img class bar a li li a href i
  • 快速教程----函数中的“条件”是什么意思?

    I know that in the first line we can use lessThanTen number Int to replace int and contidion means a label but in the th
  • 此绑定的转换器参数应该是什么

    我正在尝试实现一个 wpf 用户控件 该控件使用转换器将文本框绑定到双精度列表 如何将用户控件的实例设置为转换器参数 控件的代码如下所示 Thanks
  • Pyautogui TypeError:“NoneType”对象不可迭代

    我正在尝试使用locateCenterOnScreen PyAutoGUI 的功能 但是它会引发 Traceback most recent call last File C Users windows Desktop asd py lin
  • JavaScript - 在 display:none 和 display:block 之间添加过渡

    我正在使用 JavaScript 来切换通知 如下所示 如何添加之间的过渡display block and display none 我不想添加像 jQuery 这样的外部库 因为我只会使用toggle单独作用 var btn docum
  • PHP 扩展 (memcache|memcached) 未显示在 phpinfo() 中,但显示在 php -m 和 php -i 中?

    当我使用时 我将两个模块列为已安装 配置 php m 或者如果我使用 php i 但是当我使用时 m new Memcache or m new Memcache or m new Memcached or m new Memcached
  • 如何随着标签宽度的增加对齐所有字段

    我有一个表单 其中标签位于左侧 字段位于右侧 当标签包含少量文本时 此布局非常有效 我可以轻松设置min width标签上 以确保它们与田地的距离相同 在下面的第一张图片中 这按预期工作 当标签的文本变得太长时就会出现问题 它要么溢出到下一
  • XQuery 获取属性列表

    如果我有几个SectionXML 文档中的元素 我使用什么 XQuery 来获取所有元素的列表name values section 在 XPath 2 0 XQuery 的子集 中 可以使用以下表达式来获取 Section 元素的 nam
  • Django 1.6 和 Celery 3.0 内存泄漏

    将 Django 升级到 1 6 后 我的 celery Worker 正在耗尽 RAM 似乎分配给工作人员的内存没有被释放 并且在每次任务后都会增加 相关设置 DB DATABASES default ENGINE django db b
  • python + googledrive:上传xlsx,转换为googlesheet,获取可共享链接

    我想要的程序的流程是 上传 xlsx 电子表格到驱动器 它是使用 pandas 创建的to excel 将其转换为 Google 表格格式 指定任何知道该链接的人都可以对其进行编辑 获取链接并与将输入信息的人共享 下载完成的表格 我目前正在
  • JavaScript 保留关键字

    我想知道 JavaScript 的保留关键字 函数是如何管理的 Example 根据 http www quackit com javascript javascript reserved words cfm http www quacki
  • JSF2/PrimeFaces 中的命名容器 [重复]

    这个问题在这里已经有答案了 PrimeFaces 中可能的命名容器有哪些 当我们想要使用以下命令更新表单上的某些 UI 控件时 为什么需要为 Ajax 更新调用附加命名容器 idupdate mainForm MainAccordian u
  • Visual Studio Code 中的语言可以扩展吗?

    Scenario 我有 JSON 文件 描述了一系列要执行的任务 其中每个任务都可以引用 JSON 文件中的其他任务和对象 tasks id first action doSomething result id second action
  • 如何使用python解压文件

    我怎样才能提取一个 zip or rar使用 Python 文件 迟到了 但我对任何答案都不满意 pip install patool import patoolib patoolib extract archive foo bar rar
  • 我可以使用 URL 打开 Windows 8 应用程序吗?

    我正在创建一个具有共享会话功能的应用程序 例如 私人应用程序到应用程序的聊天会话 我会启动应用程序并创建一个 聊天室 然后通过电子邮件与某人 共享 我想要做的是创建一个 URL 当单击它时 它会打开您计算机上的应用程序 如果我邀请您到我的
  • 在 C# Windows 窗体应用程序中捕获 Ctrl + Shift + P 击键 [重复]

    这个问题在这里已经有答案了 可能的重复 在 Windows 窗体应用程序中捕获组合键事件 https stackoverflow com questions 3062587 I need to perform a particular op
  • Java使用索引来一一显示数组

    我在按索引显示数组时遇到问题 我不知道为什么会发生这种情况 任何帮助将不胜感激 这是我的代码片段 create token2 String token2 create Scanner inFile2 Scanner inFile2 new
  • Swift 3 - 调整字体大小以适合宽度、多行

    我有一个 UILabel 它设置为 42 0 pt 字体 并且标签的宽度是使用基于标签本身以外的因素的自动约束设置的 也就是标签右侧和左侧的内容决定标签的宽度 我想自动调整字体大小以适应标签的宽度 但也可以的话分成两行 与此类似 我知道您可
  • 如何将表达式插入到R中的函数体中

    我有一个函数f lt function x x 我想插入该行x lt 2 x into f这样它最终会变成 function x x lt 2 x x 我明白我应该使用body 但到目前为止我只知道如何替换entire身体 这对于我的真正目