存在无默认值的参数时 do.call() 的行为

2023-12-23

这个问题是一个后续问题之前的回答 https://stackoverflow.com/a/18108234/636656这就提出了一个难题。

之前答案中的可重现示例:

Models <- list( lm(runif(10)~rnorm(10)),lm(runif(10)~rnorm(10)),lm(runif(10)~rnorm(10)) )
lm1 <- lm(runif(10)~rnorm(10))
library(functional)
# This works
do.call( Curry(anova, object=lm1), Models )
# But so does this
do.call( anova, Models )

问题是为什么do.call(anova, Models)正如@Roland 指出的那样,工作正常吗?

方差分析的签名是anova(object, ...)

anova calls UseMethod,它应该*调用anova.lm哪个应该调用anova.lmlist,其第一行是objects <- list(object, ...), but object该表述中不存在。

我唯一能猜测的是do.call可能不只是填充省略号,而是填充所有没有默认值的参数,并留下任何额外的内容供省略号捕获?如果是这样,记录在哪里,因为这对我来说绝对是新的!

* 这本身就是一个线索——如何UseMethod知道打电话anova.lm如果第一个参数未指定?没有anova.list方法或anova.default或类似...


在常规函数调用中...按位置、部分匹配和完全匹配捕获参数:

f <- function(...) g(...)
g <- function(x, y, zabc) c(x = x, y = y, zabc = zabc)

f(1, 2, 3)
# x    y zabc 
# 1    2    3     
f(z = 3, y = 2, 1)
# x    y zabc 
# 1    2    3     

do.call其行为方式完全相同,只是参数不是直接提供给函数,而是存储在列表中,并且do.call负责将它们传递到函数中:

do.call(f, list(1, 2, 3))
# x    y zabc 
# 1    2    3     
do.call(f, list(z = 3, y = 2, 1))
# x    y zabc 
# 1    2    3     
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

存在无默认值的参数时 do.call() 的行为 的相关文章

  • 如何使用 caret 包解释模型输出的准确性

    我正在使用 caret 包来训练模型 并希望获得模型的准确性 我听说的一种常见方法是使用confusionMatrix 然而 当我运行下面的代码时 经过训练的模型给出了一些与confuseMatrix 报告的精度值略有不同的精度值 所以我的
  • 包“diamonds”不可用(对于 R 版本 3.0.0)[重复]

    这个问题在这里已经有答案了 在我的 R 环境中拥有钻石包 数据集的简单方法是什么 我是使用 RStudio 3 0 的新手 gt install packages diamonds Warning in install packages p
  • R 中循环函数返回什么值

    我正在阅读 R 语言手册 想知道循环函数返回什么值 手册第 3 3 2 节循环中说 三个语句 for while repeat 中的每一个都返回最后计算的语句的值 循环语句的返回值始终为 NULL 并且是不可见返回的 那么返回什么值 NUL
  • knitr pandoc:“无法使用 pdf writer 生成 pdf 输出”

    Up front using pandoc 在knitr中 当尝试将 md或 Rmd编译为PDF时 它会抱怨 我正在简化流程可重复的研究 正如许多地方所记录的那样 我在用着pandoc and knitr并制作出色的文档 我还试图为一些不太
  • 如何根据子字符串匹配选择 R data.table 行(类似于 SQL)

    我有一个带有字符列的 data table 并且只想选择其中包含子字符串的行 相当于SQLWHERE x LIKE substring E g gt Months data table Name month name Number 1 12
  • 在 R 中调用“boot”时没有数据

    我有一个包含很多列的数据框 第一列包含 系统 1 系统 2 等类别 第二列包含代表 0 和 1 的数字 请看下面 例如 SYSTEM Q1 Q2 S1 0 1 S1 1 0 S2 1 1 S2 0 0 S2 1 1 我在 R 中有这段代码来
  • 从谷歌街道地址中提取城市和州信息

    我有一个数据集 其中包含不同点位置的纬度 经度信息 我想知道与每个点关联的城市和州 按照此example https stackoverflow com questions 22911642 applying revgeocode to a
  • 按组渐进串联列[重复]

    这个问题在这里已经有答案了 假设我有这个输入 ID date 1 date 2 str 1 1 2010 07 04 2008 01 20 A 2 2 2015 07 01 2011 08 31 C 3 3 2015 03 06 2013
  • 没有适用于“filter_”的方法应用于类“c('double', 'numeric')”的对象

    使用下面的代码 我尝试过滤我的数据集 以便仅选择 CG less14 0 和 CG High14 0 的数据集 我收到错误 没有适用于 filter 的方法应用于 c double numeric 类的对象 我的代码有问题吗 married
  • 为什么 NaN^0 == 1

    受到早期高尔夫代码的提示 为什么会 gt NaN 0 1 1 这非常有道理NA 0为 1 因为NA缺少数据 并且any数字提高到 0 将得到 1 包括 Inf and Inf 然而NaN应该代表非数字 那么为什么会这样呢 当帮助页面出现时
  • 如何使 quarto html 文档使用全屏宽度?

    我正在使用 R 创建一个四开 html 文档并将其发布到 rpubs com 上的网络上 该文档仅使用窗口的中间三分之一 而将左侧和右侧的三分之一留为空白 我怎样才能告诉四开使用整个窗口 这是一个非常简单的可重现示例 由于某种原因 它确实使
  • 每行和每列都有条件的随机值(0 和 1)[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 您好 我正在尝试在 R 中创建一个 600 行和 18 列的数据框 但是 每行 18 列中只能随机有 3 个 1 例如 A E F 列
  • 在 ggplot2 中使用 FontAwesome 作为点的替代品

    这可能是一个相当基本的事情 但我似乎找不到有意义的答案 我正在尝试使用 R 中的 fontawesome 包将表情符号用作 ggplot2 图表中的点 但我很难弄清楚如何为每个变量分配不同的表情符号 这是一些示例数据 我们将数据框称为 样本
  • multidplyr :将函数分配给集群

    参见下面的工作解决方案 我想使用 multidplyr 并行化函数 calculs R f lt function x return x 1 main R library dplyr library multidplyr source ca
  • 如何在 R 中计算带有变量的表达式?

    我希望这段代码能够设置plt等于 10 gt var plt gt eval paste0 var lt 10 1 plt lt 10 但相反 它返回一个字符串 I tried eval as expression paste0 var l
  • R:读取多个Excel文件,提取第一个工作表名称,并创建新列

    我有多个 Excel 文件 并且它们具有唯一的工作表名称 在我的情况下是文件创建日期 我批量阅读它们 需要将工作表名称分配给新列 id 中的每个文件 我知道如何制作数字 id 或 id 文件名 但找不到将工作表名称获取为 id 的方法 li
  • R - 数据框列中唯一值的数量

    对于数据框df 我需要找到的唯一值some col 尝试了以下方法 length unique df some col 但这并没有给出预期的结果 然而length unique some vector 对向量进行处理并给出预期结果 创建 d
  • Stata的xtnbreg有R函数吗?

    一直在使用 Stata 在复制中运行负二项式回归 不确定 Stata 是如何做到这一点的 但想知道是否有 R 函数 包可以做同样的事情 R 会让我更好地了解它是如何工作的 因为我可以看到代码 看看glm nb函数在MASS包裹 如果您对 幕
  • 我收到类似 Error in if (file.access(phantompath, 1) < 0) { 的错误:当我使用 Phantomjs(p​​ort = 4567l) 时,参数的长度为零

    我的代码是 library RSelenium library wdman pDrv lt phantomjs port 4567L 以下是运行上述代码后出现的错误 checking phantomjs versions BEGIN PRE
  • 带有预先计算值的 geom_boxplot

    过去 我已经能够使用 ggplot2 创建箱线图 方法是提供下须线 下分位数 中位数 上分位数和上须线以及 x 轴标签 例如 DF lt data frame x c A B min c 1 2 low c 2 3 mid c 3 4 to

随机推荐

  • 使用可从 Excel(或非 VFP)读取的 C# 代码创建 .DBF

    语言 C 系统 Windows7 Excel 2007 我想从一些数据创建一个 DBF 并且我想从 Excel 2007 打开它 它可以是 dBase 或 Foxpro 我目前正在FoxPro9中做 顺便说一句 这段代码来自互联网 OleD
  • Haskell 中函数的序列化

    有没有办法在 Haskell 中序列化 读取 显示 函数 例如 考虑到 t 1 1 Num a gt a gt a 我希望能够拥有类似的东西 read 1 Num a gt a gt a 不幸的是这会引发一个错误 Could not ded
  • 我可以在其他类中创建 Activity 的对象吗?

    我定义了一个函数MainActivity现在我想从我的应用程序中的另一个类访问该函数 我创建了一个对象MainActivity我用这个对象调用了该函数 虽然没有错误 但是没有执行 每次我尝试执行时 应用程序都会崩溃 Activity A 应
  • 在 C# 中使用多种表单

    我正在尝试制作一个小项目 该项目针对不同的状态使用多种表单 对话框 并遇到一些问题 我的对话框是登录 设置和显示 当应用程序启动时显示登录表单 Application Run new login 用户可以从中打开 设置 表单 或者如果满足某
  • 高效退出多线程应用程序(具体)

    我已经阅读了一些有关将消息从线程冒泡到所有其他线程以优雅退出的正确方法的资料 每个线程执行其自己的退出例程 其中 我喜欢全局原子布尔值的想法 它可以从任何线程进行标记 并且所有其他线程检查此标记以执行退出例程 当所有线程都加入时 主线程可以
  • 为单选按钮组中的每个单选按钮添加图片

    我想实现一个单选按钮组 其中每个单选按钮旁边都有一张图片 在单选按钮的左侧 那可能吗 如果是这样 怎么办 html div class form group div
  • 更改监听器而不提交表单

    我有一个列表框 我想捕获选择的更改 以便根据它填充另一个列表框 我已经尝试过以下方式
  • 如何解决“CASCADE() 缺少必需的位置参数”TypeError

    我是 Django 和 Python 的新手 我已经在 Django 中创建了一些模型 现在由于以下错误而无法再运行该应用程序 TypeError CASCADE 缺少 4 个必需的位置参数 collector field sub objs
  • Mongoose 版本控制:什么时候禁用它是安全的?

    来自docs http mongoosejs com docs guide html versionKey versionKey 是每个文档首次创建时设置的属性 由猫鼬 该键值包含的内部修订 文档 该文档属性的名称是可配置的 这 默认为 v
  • 随机自定义视图选择器[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我创建了一个视图控制器 其中包含一个滚动视图 在滚动视图上我水平添加 5 个不同的自定义 UIView 我希望自定义 UIView 应根据自
  • 在执行快照的进程遍历后,如何获取所有进程的完整命令行?

    所以 我的目标是获取所有当前正在运行的进程的完整命令行 为此 我所做的就是使用CreateToolhelp32SnapshotAPI 然后执行一个流程来存储PROCESSENTRY32在名为的数组中键入进程process list BOOL
  • iOS 7.1 UITextView 在新行后仍然无法滚动到光标/插入符

    从 iOS 7 开始 UITextView当用户键入流到新行的文本时 不会自动滚动到光标 这个问题在 SO 和其他地方都有详细记录 对我来说 这个问题在 iOS 7 1 中仍然存在 我究竟做错了什么 我安装了 Xcode 5 1 目标是 i
  • HttpUtility.HtmlAttributeEncode 的缺点

    我必须对一个字段进行编码 以确保脚本注入的安全 我知道我可以使用 HttpUtility HtmlEncode 和 Decode 但是这种用于 HI ASCII 字符的方法超出了数据库中字段大小的范围 并且我不想更改数据字段列的大小 相反
  • Oracle 12c XML 从响应中获取值

    我是 PL SQL 新手 我需要使用 SOAP Web 服务 我无法从此响应中提取 p 地址值 response xml
  • 跨域限制和子域

    子域有跨域策略限制吗 如果我有一个申请paint xxxx com这是操纵图像image xxxx com 有跨域问题吗 我问这些问题是因为我正在考虑在子域上放置代理 是的 跨域限制适用于子域 解决方案是把 document domain
  • IntelliJ IDEA 可以在完成后自动格式化代码块吗?

    一些 IDE 提供在完成一行或代码块后自动格式化它的功能 例如通过写结束花或分号 我很难相信 IDEA 不提供这种功能 或者确实如此 如果您知道如何打开它 或者如果我可能需要一些插件 请让我和全世界知道 If it s a single l
  • Emacs 中的代码折叠[重复]

    这个问题在这里已经有答案了 可能的重复 emacs中如何实现代码折叠效果 https stackoverflow com questions 1085170 how to achieve code folding effects in em
  • 无法将 String 用作 Spring Data 的 @Id

    我想使用此类在数据库上创建新表 Entity Table name currency rate public class CurrencyRate Id private String id Column name source curren
  • PHPDoc 的冗长是否带来的麻烦大于它的价值? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我今天第一次尝试使用 PHPDoc 很快就遇到了问题 每 1 行变量声明 我至少有 5 行注释 例子 Holds path the remote
  • 存在无默认值的参数时 do.call() 的行为

    这个问题是一个后续问题之前的回答 https stackoverflow com a 18108234 636656这就提出了一个难题 之前答案中的可重现示例 Models lt list lm runif 10 rnorm 10 lm r