如何检索原始函数的形式?

2023-11-26

至少目前,这对我来说是一个学习练习,所以实际功能或其复杂性不是问题。假设我编写一个函数,其参数列表包含一些输入变量和函数名称,以字符串形式传递。然后,该函数在内部计算一些变量,并“决定”如何将它们提供给我传入的函数名称。

对于非原始函数,我可以这样做(对于这个例子,假设我的funcname函数有除 atmost 之外的任何参数(x,y,z)。如果他们这样做了,我就必须编写一些代码来搜索匹配names(formals(get(funcname)))以免删除其他参数):

foo <- function (a,b,funcname) {
    x <- 2*a
    y <- a+3*b
     z <- -b
    formals(get(funcname)) <- list(x=x, y=y, z=z)
    bar <- get(funcname)()
return(bar)
}

好处是,即使函数funcname即使不使用也会无错误地执行x, y or z(只要没有其他参数没有默认值)。
“原始”函数的问题是我不知道有什么方法可以找到或修改它们的形式。除了编写包装器之外,例如foosin <-function(x) sin(x),有没有办法设置我的foo函数可以使用原始函数名称和非原始函数名称作为输入参数吗?


formals(args(FUN))可用于获取原始函数的形式。

你可以添加一个if对现有函数的声明。

> formals(sum)
# NULL
> foo2 <- function(x) {
      if(is.primitive(x)) formals(args(x)) else formals(x)
      ## formals(if(is.primitive(x)) args(x) else x) is another option
  }
> foo2(sum)
# $...
#
#
# $na.rm
# [1] FALSE
#
> foo2(with)
# $data
# 
#
# $expr
#
#
# $...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检索原始函数的形式? 的相关文章

  • 如何让 print() 将参数传递给 R 中用户定义的打印方法?

    我在 R 中定义了一个 S3 类 它需要自己的打印方法 当我创建这些对象的列表并打印它时 R 按其应有的方式对列表中的每个元素使用我的打印方法 我想对打印方法实际显示的数量进行一些控制 因此 我的类的 print 方法需要一些额外的参数 但
  • R::bigmemory - 如何创建角色big.matrix?

    我尝试使用bigmemory封装在R我一开始就陷入困境 我愿意 temp lt matrix paste a 1 10 5 2 并得到一个字符矩阵 没关系 但后来我尝试 x lt as big matrix temp type char 我
  • 将 Instagram/youtube 嵌入 Shiny R 应用程序

    我想通过点击图表来播放 Instagram 或 Youtube 视频 例如显示异常值等 到目前为止 明确告诉 Shiny 视频内容是有效的 require shiny require ggplot2 data df lt data fram
  • 计算例如具有多列 data.frames 的列表中的平均值

    我有几个 data frames 的列表 每个 data frame 有几列 通过使用mean mylist first dataframe a我可以得到这个 data frame 中 a 的平均值 但是我不知道如何计算列表中存储的所有 d
  • 如何在R中删除重复项

    我有一个非常大的数据集 如下所示 df lt data frame school c a a a b b c c c year c 3 3 1 4 2 4 3 1 GPA c 4 4 4 3 3 3 2 2 school year GPA
  • 将年月格式转换为 POSIXct [重复]

    这个问题在这里已经有答案了 我有一些年月形式的数据 我想将其格式化以用于绘图ggplot date lt c 2016 03 2016 04 2016 05 2016 06 2016 07 2016 08 2016 09 2016 10 2
  • 如何用外部图像填充地图边界?

    我正在创建一张带有州边界的巴西地图 这可以直接使用ggplot2 and geom sf 然而 这一次 我不想用数据填充每个状态的颜色 而是想用外部图像 png 填充每个状态的边界 类似于this https online olivet e
  • 计算每个唯一值出现的次数

    假设我有 v rep c 1 2 2 2 25 现在 我想计算每个唯一值出现的次数 unique v 返回唯一值是什么 但不返回它们的数量 gt unique v 1 1 2 我想要一些能给我的东西 length v v 1 1 25 le
  • R中的一元加/减是什么?

    来自 R 的详细信息部分Syntax http stat ethz ch R manual R patched library base html Syntax html帮助页面 定义了以下一元和二元运算符 他们被列出 在优先级组中 从最高
  • 正则表达式字符串中第一个和最后一个非点的位置

    我希望找到字符串的第一个和最后一个非点元素的位置 理想情况下我想这样做regex在基地R 我已经写过R解决问题的代码 不过 我对一个感兴趣regex解决方案 感谢您的任何建议 这是一个示例数据集和R代码以获得所需的结果 此代码拆分字符串并使
  • 选择 R 中的数据表中隐藏时(在绿色加号下方)列的显示顺序

    Context 使用 DataTables 库制作交互式表格时 当屏幕宽度对于列的数量和宽度来说太窄时 列将隐藏在绿色 号下 我有一个非常宽的表格 有 20 多列 其中一些内容非常冗长 因此某些列在所有屏幕宽度下总是隐藏的 每次隐藏新列时
  • 时间戳半小时窗口内字段的平均值

    我的数据框有列名Timestamp es看起来像 Timestamp es 2015 04 01 09 07 42 31 2015 04 01 09 08 01 29 5 2015 04 01 09 15 03 18 5 2015 04 0
  • pyomo + 网状错误 6 句柄无效

    我正在尝试运行pyomo优化 我收到错误消息 Error 6 The handle is invalid 不知道如何解释它 环顾四周似乎与特权有关 但我不太明白 在下面找到完整的错误跟踪以及重现它的玩具示例 完整的错误跟踪 py run f
  • 从命令行运行 R 代码 (Windows)

    我在名为 analysis r 的文件中有一些 R 代码 我希望能够从命令行 CMD 运行该文件中的代码 而无需通过 R 终端 并且我还希望能够传递参数并在我的代码中使用这些参数 例如就像下面的伪代码 C gt execute r scri
  • Purrr::map_df() 删除 NULL 行

    使用时purrr map df 我偶尔会传递一个数据框列表 其中一些项目是NULL 当我做 map df 返回行数少于原始列表的数据框 我想发生的事情是这样的map df calls dplyr bind rows 它忽略了NULL价值观
  • 将数据框中重叠的范围合并到唯一的组中

    我有一个 n 行 3 的数据框 df lt data frame start c 178 400 983 1932 33653 end c 5025 5025 5535 6918 38197 group c 1 1 2 2 3 df sta
  • ddply 和aggregate 之间的区别

    有人可以通过以下示例帮助我了解聚合和 ddply 之间的区别 数据框 mydat lt data frame first rpois 10 10 second rpois 10 10 third rpois 10 10 group c re
  • 基于时间窗口的不规则时间序列的优化滚动函数

    有没有办法使用 rollapply 来自zoo包或类似的东西 优化功能 rollmean rollmedian等 使用基于时间的窗口计算滚动函数 而不是基于大量观察的函数 我想要的很简单 对于不规则时间序列中的每个元素 我想计算一个具有 N
  • 文本挖掘 pdf 文件/词频问题

    我正在尝试挖掘一篇具有丰富 pdf 编码和图表的文章的 pdf 我注意到 当我挖掘一些 pdf 文档时 我得到的高频词是 phi taeoe toe sigma gamma 等 它与某些 pdf 文档配合良好 但与其他文档配合使用时却得到这
  • 如何仅删除单括号并保留配对的括号

    你好 我亲爱的老师 R 用户朋友们 我最近开始认真学习正则表达式 最近我遇到了一种情况 我们只想保留配对括号 并省略未配对的 这是我的样本数据 structure list t1 c Book Pg 1 Website Online Jou

随机推荐

  • CodeIgniter - 如何捕获数据库错误?

    有没有办法制作CI扔一个例外当它遇到一个DB error而不是显示如下消息 发生数据库错误错误号 1054 where 子句 中的未知列 foo SELECT FROM FooBar WHERE foo 1 注意 我只希望这种情况发生在一个
  • 生成多个范围之间的随机数

    我了解如何生成两个数字之间的随机数 1 int Math random 10 1 1 or min int Math random max min 1 但是我如何生成一个属于多个范围的随机数呢 例如 数字可以在 1 到 10 之间或 50
  • 需要 JavaCV FFmpegFrameRecorder 属性解释

    我在用着FFmpegFrameRecorder从我的网络摄像头获取视频输入并将其记录到视频文件中 问题是我正在使用我发现的一些不同的演示源代码构建我的应用程序 并且我使用其中一些属性对我来说并不完全清楚 首先 这是我的代码片段 FFmpeg
  • 使用 dyn.load 在 R x64 中加载已编译的 C 代码时出现问题

    我最近从32位笔记本换成了64位台式机 都是win7 我刚刚发现使用加载 dll 时出现错误dyn load 我想这是一个简单的错误 我忽略了一些事情 例如 我编写了这个简单的 c 函数 foo c void foo int x x x 1
  • pandas 按两列分组并按平均值汇总

    我有一个像这样的数据框 df pd DataFrame df id 1 1 1 2 2 3 3 3 3 4 4 5 df view A B A A B A B A A B A B df value np random random 12 i
  • WebMethod 返回 JSON 格式的值

    如何将Webmethod的值以JSON格式返回给客户端 我想返回两个静态 int 值 我是否需要使用这两个属性创建新对象并返回它 GetStatus 方法被频繁调用 我不喜欢每次只是为了 json 格式创建一个特殊对象的想法 WebMeth
  • 为什么绝对定位元素显示在静态元素之上?

    我知道绝对定位会破坏正常流程 但由于 HTML 中的顺序是先是绝对元素 然后是静态元素 所以我希望它也能反映在显示顺序中 absolute position absolute width 100px height 100px backgro
  • 为什么Apple推荐使用dispatch_once来实现ARC下的单例模式?

    在ARC下单例的共享实例访问器中使用dispatch once的确切原因是什么 MyClass sharedInstance Static local predicate must be initialized to 0 static My
  • 在 AVAudioEngine 中从网络传输数据,可能吗?

    我有一个使用的应用程序AVAudioEngine用于从本地文件系统播放文件AVAudioPlayerNodes and AVAudioFiles 这工作得很好 现在我想让我的设置也支持从互联网上的服务器流式传输 MP3 文件 到目前为止我尝
  • 为什么安装VS 2017后命令行csc无法编译C#7?

    我刚刚下载了 Visual Studio 2017 RC 这是几天前发布并支持 C 7 我可以使用 IDE 中的 C 7 功能 然而 这种行为似乎不适用于命令行 我正在从事一个项目 需要csc用于处理 C 7 及更高版本的可执行文件 但是
  • 当我在 Windows 上克隆带有符号链接的存储库时会发生什么?

    关于在 Windows 上添加符号链接的支持存在很多问题 但是 当我克隆时实际发生了什么带有符号链接的存储库在 Windows 上 Since 版本1 5 3本机 Git 客户端git clone and git init将探测目标文件系统
  • 当程序崩溃且没有异常时如何调试程序?

    我的一个程序定期崩溃 但我不知道为什么 我在调试模式下运行它 但没有弹出任何内容 程序突然退出了 我遇到过其他确实引发异常的错误 但不是这个 有什么神奇的方法可以抓住它吗 假设您是从 Visual Studio 中运行它 并且由于某种原因
  • ADB 无法识别 Samsung Gear Live 或 LG G 手表

    我正在尝试执行adb在 Windows 7 上的 Samsung Gear Live 手表上 我似乎没有找到设备驱动程序来让它被 ADB 识别 这是我已经拥有的 我已经在 Gear Live 中启用了 ADB 调试 我转到设备管理器并将 g
  • 如何使用 log4net 记录 Threadpool 线程的正确上下文?

    我正在尝试找到一种方法来从一堆线程中记录有用的上下文 问题是 许多代码是在通过线程池线程到达的事件上处理的 据我所知 因此它们的名称与任何上下文都没有关系 该问题可以通过以下代码来演示 class Program private stati
  • Haxe - 打印命令行参数

    使用 Haxe 编程语言 是否可以打印传递给应用程序的命令行参数 我正在尝试在 Haxe 中重写这个 Java 程序 它只是打印命令行参数 public class JavaExample public static void main S
  • 在没有身份的情况下使用 Bearer/Jwt 授权

    我正在使用 Asp 5 开发 Web API 并阅读了一些有关 Web API 的文档 意识到我需要 Bearer 授权 经过查找 没有发现任何未经授权使用的文档或样本Aspnet Identity 我有自己的会员资格 但我不想使用Iden
  • 实现命令模式

    我正在设计一个应用程序 我想使用命令模式用于撤消 重做目的 我对命令模式做了一些研究 但我唯一不明白的是 命令是否应该具有撤消和重做方法 或者我应该创建两个单独的命令 一个用于撤消 一个用于重做 并从主命令本身 命令对象本身应该实现撤消 重
  • 单击 Facebook Like 按钮后显示内容

    我有一个网页部分 我只希望人们在单击 Facebook Like 按钮后能够访问该部分 如何隐藏该特定区域 然后仅在有人单击 赞 按钮后才显示它 至于 Facebook Like 代码 如下所示
  • 了解 PHP &(与号、按位与)运算符

    我经常使用 var 1 在我的代码中 如果 var是奇数 如果是偶数则为 false 但 实际上有什么作用呢 是二进制的and 如果你有一个二进制值 并且你and与另一个二进制值 则结果将是按位and两者之中 一个例子 01101010 0
  • 如何检索原始函数的形式?

    至少目前 这对我来说是一个学习练习 所以实际功能或其复杂性不是问题 假设我编写一个函数 其参数列表包含一些输入变量和函数名称 以字符串形式传递 然后 该函数在内部计算一些变量 并 决定 如何将它们提供给我传入的函数名称 对于非原始函数 我可