既然“invoke”已被软弃用,那么替代方案是什么?

2023-12-03

rlang::invoke()现已软弃用,purrr::invoke()退休了。如今,以编程方式调用带有参数列表的函数的简洁方法是什么?


tldr; Use exec代替invoke; use map2 plus exec代替invoke_map.


示例invoke

随着退休invoke

set.seed(2020)
invoke(rnorm, list(mean = 1, sd = 2), n = 10)
#[1]  1.7539442  1.6030967 -1.1960463 -1.2608118 -4.5930686  2.4411470
#[7]  2.8782420  0.5412445  4.5182627  1.2347336

With exec

set.seed(2020)
exec(rnorm, n = 10, !!!list(mean = 1, sd = 2))
#[1]  1.7539442  1.6030967 -1.1960463 -1.2608118 -4.5930686  2.4411470
#[7]  2.8782420  0.5412445  4.5182627  1.2347336

示例invoke_map

同样,代替invoke_map你会用map2 with exec。以前,您会使用invoke_map使用具有不同参数组的函数

set.seed(2020)
invoke_map(rnorm, list(list(mean = 0, sd = 1), list(mean = 1, sd = 1)), n = 10)
#    [[1]]
#     [1]  0.3769721  0.3015484 -1.0980232 -1.1304059 -2.7965343  0.7205735
#     [7]  0.9391210 -0.2293777  1.7591313  0.1173668
#
#    [[2]]
#     [1]  0.1468772  1.9092592  2.1963730  0.6284161  0.8767398  2.8000431
#     [7]  2.7039959 -2.0387646 -1.2889749  1.0583035

现在,使用map2 with exec

set.seed(2020)
map2(
    list(rnorm),
    list(list(mean = 0, sd = 1), list(mean = 1, sd = 1)),
    function(fn, args) exec(fn, n = 10, !!!args))
#    [[1]]
#     [1]  0.3769721  0.3015484 -1.0980232 -1.1304059 -2.7965343  0.7205735
#     [7]  0.9391210 -0.2293777  1.7591313  0.1173668
#
#    [[2]]
#     [1]  0.1468772  1.9092592  2.1963730  0.6284161  0.8767398  2.8000431
#     [7]  2.7039959 -2.0387646 -1.2889749  1.0583035

可悲的是,map2 plus exec语法并不那么简洁invoke_map,但它可能更规范。

一些可能有助于避免使用时出现问题的评论map2 plus exec:

  1. 第一个参数map2必须是一个list. So map2(list(rnorm), ...)将工作。只需提供如下功能map2(rnorm, ...)将不会。这不同于invoke_map,它接受了两个list函数和函数本身。
  2. 第二个参数必须是list论证的lists. map2将迭代顶层list,然后使用大爆炸运算符!!! inside exec强制拼接list函数参数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

既然“invoke”已被软弃用,那么替代方案是什么? 的相关文章

  • 用于清除工作空间和转储存储的 R 全局函数

    我希望创建一个全局函数来清除我的工作区并转储我的内存 我将我的函数称为 cleaner 并希望它执行以下代码 remove list ls gc 我尝试在全局环境中创建该函数 但是当我运行它时 控制台仅打印该函数的文本 在我要获取的函数文件
  • dplyr 中的 Summarize 是否可以不删除数据框中的其他列?

    我有一个包含三列的数据框 我正在尝试进行简单的总结以查找数据框中每个城市的最高温度 但同时保留每个最高温度列出的日期 这是数据框 我们称之为 maxT new ID Date Max TemperatureF 1 TUS 1960 04 0
  • 使用底格里斯河从纬度/经度获取人口普查区

    我有相对较多的坐标 我想获取其人口普查区 除了 FIPS 代码 我知道我可以使用以下命令查找各个纬度 经度对call geolocator latlon 已完成here https stackoverflow com questions 5
  • 如何让R使用所有处理器?

    我有一台运行 Windows XP 的四核笔记本电脑 但查看任务管理器 R 似乎一次只使用一个处理器 如何让 R 使用全部四个处理器并加速我的 R 程序 我有一个基本系统 我使用它在 for 循环上并行化我的程序 一旦您了解需要做什么 此方
  • 如何使用 R 中带引号的字符值内的序列读取 CSV?

    这是一个包含两个字符列的 CSV 文件 key value a 所有字符值都用双引号引起来 并且有一个顺序 在值之一内 转义引号加分隔符 我无法通过 read csv readr 中的 read csv 或 data table 中的 fr
  • 在函数内部调用 clusterApply 时,性能会下降

    我遇到了一个奇怪的问题clusterApply 我已经能够尽可能地隔离它 如下所示 首先 我从全局环境运行以下代码 require parallel cl lt makeCluster rep localhost 20 SOCK xl lt
  • 我应该用不可变或可变的数据结构来表示数据库数据吗?

    我目前正在使用 Scala 进行编程 但我想这适用于任何函数式编程语言 或者更确切地说 任何建议不变性并可以与数据库交互的编程语言 当我从数据库中获取数据时 我将其映射到模型数据结构 在函数式编程中 数据结构往往是不可变的 但是数据库中的数
  • R.matlab/readMat:readTag(this) 中出错

    我正在尝试使用 R matlab 将 matlab 文件读入 R 但遇到此错误 require R matlab r lt readMat file mat verbose T Trying to read MAT v5 file stre
  • 在另一个 Rmd 中运行选定的块

    我已经在源 Rmd 文件中运行了分析 并且希望仅使用few来自源的块 我已经看到了一些关于从源 Rmd 中提取所有块的答案来自另一个 Rmd 中的 Rmd 文件的源代码 https stackoverflow com questions 4
  • R 编程:如何计算数据框中两个单元格之间的差异并将它们保存在新列中

    尝试学习 R 并陷入自相关示例中 我想将 x 的差异与 y 的差异进行回归 我在数据框中有 x 和 y 并且希望将 x2 x1 的差值保存在新列 例如 dx 中 我不知道该怎么做 我拥有的 data1 x y 5 3 8 9 3 1 1 5
  • 使用 R 进行项目组织 [重复]

    这个问题在这里已经有答案了 可能的重复 统计分析和报告撰写的工作流程 https stackoverflow com questions 1429907 workflow for statistical analysis and repor
  • R 中的字符串作为函数参数

    数据框chocolates列出了糖果的类型以及每种糖果的一组评级 ID sweetness filling crash snickers 0 67 0 55 0 40 milky way 0 81 0 53 0 56 我正在编写一个函数 它
  • 有没有一种简单的方法来判断存储在一个列表中的许多数据帧是否包含相同的列?

    我有一个包含许多数据框的列表 df1 lt data frame A 1 5 B 2 6 C LETTERS 1 5 df2 lt data frame A 1 5 B 2 6 C LETTERS 1 5 df3 lt data frame
  • R - 通过覆盖和递归合并列表

    假设我有两个带有名字的列表 a list a 1 b 2 c list d 1 e 2 d list a 1 b 2 b list a 2 c list e 1 f 2 d 3 e 2 我想递归地合并这些列表 如果第二个参数包含冲突的值 则
  • ggplot散点图中的图例问题

    我想使用 ggplot 创建显示方法比较数据的散点图 绘图应包含原始数据 理想线和带误差的拟合线 图例应显示理想线和拟合线的线型 线宽 线颜色 我可以获得大部分我想要的东西 但是图例存在以下问题 图例显示每种线型有 2 条线 为什么 如何解
  • 在 R 中使用 Huggingface Transformer 模型

    我正在尝试在 R 中使用不同的 Huggingface 模型 这是通过 reticulate 导入 Transformer 包来实现的 谢谢 https rpubs com eR ic transfoRmers https rpubs co
  • 为什么 geom_boxplot 比基本箱线图识别更多异常值?

    这是一个可重复的示例 与基本箱线图相比 最后一个治疗组又发现了一个异常值 dta lt structure list Treatment c A A A A A A A A A A A A A A A A B B B B B B B B B
  • 16 位以上整数的计算

    我有两个大整数 两者都超过 16 位 确切地说是 20 位 而且我知道由于双精度浮点运算 我在使用这些数字进行计算甚至将它们存储在变量中 独立于编程语言 时受到限制 不过 我想也许gmp图书馆应该处理它们 但不幸的是它没有 可以计算更大的整
  • 如何匹配 R 中的所有匹配项?

    我有 1000 个名字的列表 说A 我还有另外 5 个名字的清单 说B 我想找出这5个名字出现在1000个号码列表中的第几行 例如 Amy 在 A 中可以出现 25 次 B 里有艾米 我想知道 Amy 出现在 A 中的哪些行 我以前使用过
  • 如何将 ggrough 图表另存为 .png

    说我正在使用R包裹ggrough https xvrdm github io ggrough https xvrdm github io ggrough 我有这个代码 取自该网页 library ggplot2 library ggroug

随机推荐

  • 从点数组平滑二维线

    当用户绘图时 每次输入事件触发时我都会捕获他们输入的位置 然后在每个点之间绘制直线 不幸的是 这会产生非常锯齿状的外观 并且情况会变得更糟 具体取决于用户移动输入的速度相对于输入事件触发的速度 我想要的是一个函数 它接受一个点数组并返回一个
  • 如何在三元运算符中使用 ASP.NET Eval() 函数?

    我希望评估数据集中的两个字符串 以使用三元运算符来识别类描述 运行此代码时 我继续收到编译器错误 指出 需要表达式 我认为这与字符串的比较有关 但我尝试过其他比较运算符 但似乎无法让它工作
  • 自动删除 EditText 任何文本的前导空格?

    描述 我正在开发一个应用程序 其中有注册页面 在注册页面内 我通过获取用户的全名和手机号码进行注册 Problem 在编辑文本中获取用户的全名时 有时用户会在输入他 她的名字之前按空格键 我需要您在输入任何文本之前禁用空格键 白人用户开始输
  • 使用 Visual Studio 2008 中的设计器将逗号分隔列表作为参数传递给 db2 查询的 IN 子句

    我想将逗号分隔的值列表作为参数传递给我正在使用 Visual Studio 2008 中的设计器 基于我正在经历的一些强类型 DAL 教程 构建的查询 该查询针对 DB2 数据库 这就是我想做的 从客户所在的价格中选择 它工作得很好 我在
  • 调用结果未使用

    在第二条评论的正下方 我收到一条错误 调用 taskForDeleteMethod 的结果未使用 为什么当我在调用后的闭包中使用结果和错误时会出现这种情况 func deleteSession completionHandlerForDel
  • Java 重写私有函数不显示多态行为

    public class Shape final private void print System out println in class Shape public static void main String args Shape
  • 如何知道 onCreateView 函数中哪个选项卡处于活动状态?

    我如何知道我的哪个选项卡处于活动状态 public View onCreateView LayoutInflater inflater ViewGroup容器 Bundle savingInstanceState 函数 以下代码仅适用于首次
  • 调用 SwingWorker.get( ) 时防止 GUI 冻结

    我有一个程序 我正在加载文件 同时显示一个窗口以通知用户正在加载文件 我决定创建一个 FileLoader 类 它是一个 SwingWorker 它实际上处理加载文件 还有一个 ProgressWindow 它实现 PropertyChan
  • Java 砖块碰撞 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我一直在开发一款 Breakout 游戏 除了砖块碰撞之外 几乎所有的事情都完成了 球在墙壁和桨上弹跳得很好 但当它碰到砖块时 它会直接穿过它们 我很确定问题出在主类的 chec
  • RestSharp 忽略响应字符集编码

    我正在使用 RestSharp 版本 105 1 0 NET 4 5 1 对我们自己的 API 进行 REST 调用 此 API 发送带有以下特别感兴趣的标头的响应 Content Type application json Charset
  • 在 Java 中截取屏幕截图(机器人,代码可以工作,但不能与外部全屏应用程序一起使用)

    我使用以下代码来截取屏幕截图 Robot robot new Robot BufferedImage image robot createScreenCapture screenRectangle ImageIO write image p
  • 区分联合表中的行

    我正在使用此 sql 查询从两个不同的表中选择没有匹配列的数据 select from SELECT s shout id s user id s time FROM shouts s union all select v post id
  • Visual Studio 相当于 c++11(或更低版本)中的 gcc __attribute__((unused))?

    我正在尝试编写一个宏 以便在用户需要时使用抑制未使用的变量警告 例如 在派生类中 当您尚未实现整个类时 我知道我可以删除变量名称 但为了明确起见 我更喜欢宏 到目前为止我有这个 ifdef WIN32 define UNUSED x x e
  • 在 VS2013 中使用 VS2008 (v90) C++ 工具集?

    微软文档解释如何在 VS2013 中使用 2010 或 2012 工具集 有谁知道 2008 工具集是否也有向后支持 我正在从 2008 年升级到 2013 年的几个项目 但我的团队领导希望我们最初升级项目文件 但仍以与 2008 年相同的
  • Git svn 变基失败

    I use git svn跟踪 SVN 存储库 当我尝试做一个git svn rebase我收到此错误 Incomplete data Delta source ended unexpectedly 这是一个大型仓库 具有悠久的历史 仅仅获
  • MVC4 Windows 身份验证重定向到帐户/登录

    我正在设置Windows 身份验证在 MVC 4 应用程序中使用视觉工作室2013并使用IIS Express 开发服务器 但是 我被重定向到 Account Login 就好像我正在使用表单身份验证一样 我的 bin 文件夹 或任何地方
  • 在 RECEIVE_BOOT_COMPLETED 上通过广播接收器访问数据库

    当手机完成启动后 我想根据数据库中的小时 分钟 信息自动重新注册一些警报 我尝试使用广播接收器来执行此操作 但它不起作用 当尝试在启动时访问数据库 DB 帮助程序类时 它会崩溃 通过应用程序访问数据库帮助程序类时 它工作正常 这是可能的还是
  • boost::spirit::karma 输出引号内的字符串

    我正在尝试使用 boost spirit karma 转义引号中的字符串 如果它只是一个字符串 则效果很好 但是 对于 std vector 中 boost variant 中的字符串 则不然 只是打印字符串确实有效 但是我不太明白为什么
  • 字符串有隐藏字符,无法验证,

    大约2小时前我问了一个问题 不需要看问题 只是一个参考 使用node js存储图像出现错误 给出的解决方案实际上与我的代码相同 我试图找到我的代码和他的代码之间的差异 看看他做了什么修改才能使其工作 但没有任何修改 所以我想到尝试一下在线I
  • 既然“invoke”已被软弃用,那么替代方案是什么?

    rlang invoke 现已软弃用 purrr invoke 退休了 如今 以编程方式调用带有参数列表的函数的简洁方法是什么 tldr Use exec代替invoke use map2 plus exec代替invoke map 示例i