对...()感到困惑?

2024-03-24

In 另一个问题 https://stackoverflow.com/a/12417320/636656, sapply(substitute(...()), as.character)在函数内部使用来获取传递给函数的名称。这as.character部分听起来不错,但到底是做什么的...() do?

该代码在以下范围之外无效substitute:

> test <- function(...) ...()
> test(T,F)
Error in test(T, F) : could not find function "..."

更多测试用例:

> test <- function(...) substitute(...())
> test(T,F)
[[1]]
T

[[2]]
F

> test <- function(...) substitute(...)
> test(T,F)
T

这是原因的草图...()就这样工作。稍后我将补充更多细节和参考资料,但这涉及到要点。

  1. 在对其任何组件进行替换之前,substitute()首先解析 R 语句。

  2. ...()解析为调用对象,而...解析为名称对象。

  3. ...是一个特殊对象,仅用于函数调用。因此,实现替换的 C 代码会采取特殊措施来处理...当在调用对象中找到它时。类似的预防措施还有not拍摄时间...作为一个符号出现。 (相关代码在函数中do_substitute, substitute, and substituteList(尤其是后两者)R_SRCDIR/src/main/coerce.c.)

所以,() in ...()是使语句被解析为调用(也称为语言)对象,以便替换将返回点的完全展开的值。看起来可能令人惊讶的是...即使它位于外部,也会被替换(),但是:(a) 调用在内部存储为类似列表的对象,并且 (b) 相关的 C 代码似乎没有区分该列表的第一个元素和后续元素。


只是旁注:用于检查substitute或者各种对象的类,我发现设置一个小沙箱很有用,如下所示:

f <- function(...) browser()
f(a = 4, 77, B = "char")
## Then play around within the browser
class(quote(...))  ## quote() parses without substituting
class(quote(...()))
substitute({...})
substitute(...(..., X, ...))
substitute(2 <- (makes * list(no - sense))(...))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对...()感到困惑? 的相关文章

  • 增加雷达图中长轴标签的空间

    我想创建一个雷达图ggirahExtra ggRadar 问题是我的标签很长并且被剪掉了 我想我可以通过添加在标签和绘图之间创建更多空间margin margin 0 0 2 0 cm to element text in axis tex
  • 当设置 coord_fixed 时,ggplot/shiny 中的鼠标悬停坐标是错误的

    我正在使用问题中的答案 当您将鼠标悬停在闪亮的 ggplot 上时出现工具提示 https stackoverflow com questions 27965931 tooltip when you mouseover a ggplot o
  • 如何根据 ggplot2 中的汇总数据创建堆积条形图

    我正在尝试使用 ggplot 2 创建堆积条形图 我的宽格式数据如下所示 每个单元格中的数字是响应的频率 activity yes no dontknow Social events 27 3 3 Academic skills works
  • 将维基百科中的表格加载到 R 中

    我正在尝试从以下 URL 将最高法院法官表加载到 R 中 https en wikipedia org wiki List of Justices of the Supreme Court of the United States http
  • 扩展数据框以使其具有与原始行中两列的范围一样多的行[重复]

    这个问题在这里已经有答案了 我有一个数据框如下 structure list symbol c u n v i a start c 9L 6L 10L 8L 7L end c 14L 15L 12L 13L 11L Names c symb
  • R 改变构面的顺序

    我正在尝试将方面的顺序从 BA SLG 更改为 SLG BA 我发现了与此类似的问题 但我认为我的解决方案可能不起作用 因为我已经在Excel中汇总了数据 因此 我的数据框可能会有所不同 无论如何 我尝试实现这个但无济于事 df2 lt f
  • 在 R 上安装 TDA 包时出错:目标“diag.o”的配方失败

    使用 Ubuntu 16 04 和 R 3 4 1 安装 R 包 TDA 时收到错误消息 它似乎与制作 CGAL diag cpp 和 或 diag o 最后的完整错误打印输出 有关 我仔细看了这个 在 R 上安装 TDA 包时出错 htt
  • 如何将参数从 Excel/VBA 传递到 Rstudio 中的脚本

    我正在尝试使用 Rstudio 从 VBA 打开 R 脚本 同时将参数传递给 R 脚本 然后我可以使用 commandArgs 访问该脚本 该问题与此处描述的问题非常相似 WScript Shell 用于运行路径中包含空格且来自 VBA 的
  • 使用data.table进行聚合

    经过 SO 用户的多次建议后 我终于尝试将我的代码转换为使用data table library data table DT lt data table plate paste0 plate rep 1 2 each 5 id rep c
  • 如何在R中分离两个图?

    每当我运行这段代码时 第一个图就会简单地覆盖前一个图 R中有没有办法分开得到两个图 plot pc title main abc xlab xx ylab yy plot pcs title main sdf xlab sdf ylab x
  • 如何使用plotmath更新ggplot图例标签

    我正在尝试更新ggplot要使用的图例标签plotmath但是 当我这样做时 它将之前组合的图例分成两部分 通过一个例子可能更容易理解 test data and the default plot gives the correct col
  • 闪亮井板宽度

    library shiny library shinydashboard ui lt dashboardPage dashboardHeader dashboardSidebar dashboardBody wellPanel tags d
  • R 中图周围的圆形边框

    我需要在情节周围放置平滑的边框 代码 plot 0 10 0 10 type n xlab X ylab Y box figure col blue 除了简单的蓝线 我如何放置带有圆角的平滑灰线 非常感谢 library grid plot
  • 计算字符串向量中连续数字的函数

    我想创建一个函数 它接受至少 1 个元素的字符串对象并包含数字 2 到 5 并确定是否存在至少 N 长度的连续数字 其中 N 是实际数字值 如果是 则返回字符串 true 否则返回字符串 false 例如 Input 555123 Outp
  • 将文件名附加到 R 中的数据框

    我想将文件名附加到我的表中 但它似乎并没有真正起作用 我正在做的是迭代文件名列表 打开它们 将所有数据附加到一个数据帧 对于每个附加文件 我想添加其文件名 我希望将其附加到每一行 以便稍后当我查看数据时 我会知道给定行源自哪个文件 但似乎并
  • rPlot 工具提示问题

    我有一个使用 rCharts 工具提示的简单示例 但似乎不起作用 set seed 1 test lt data frame x rnorm 100 y rnorm 100 rPlot y x data test type point to
  • autoplot.microbenchmark 实际绘制了什么?

    根据文档 microbenchmark autoplot 使用 ggplot2 生成更清晰的微基准计时图 凉爽的 让我们尝试一下示例代码 library ggplot2 tm lt microbenchmark rchisq 100 0 r
  • 使用括号表示 y 轴上的负值 ggplot2

    我想在括号中显示 y 轴负值 而不是用负号 例如 我想显示 2 000 而不是 2 000 我在 R 中使用 ggplot2 我尝试在scale y continuous内部使用 negative parens TRUE 如下所示 但没有成
  • ggplot2 的 fortify 函数出错

    我在 ggplot2 中使用 fortify 方法时收到此错误 Error in function classes fdef mtable unable to find an inherited method for function pr
  • 根据列中的部分字符串匹配选择数据框行

    我想根据列中字符串的部分匹配从数据框中选择行 例如列 x 包含字符串 hsa 使用sqldf if它有一个like语法 我会做类似的事情 select from lt gt where x like hsa 很遗憾 sqldf不支持该语法

随机推荐

  • 您将如何对这个 SQLAlchemy Core 查询/函数进行单元测试?

    我正在努力学习如何正确进行单元测试 鉴于这个功能 def get user details req user id users sa Table users db metadata autoload True s sa select use
  • 如何在反应中创建折叠展开列表

    我尝试在中创建折叠和展开侧菜单React v 16 5 符合以下标准 页面加载时 第一个项目 通告 将处于展开视图中 任何一个项目都可以一次展开 例如 如果用户单击第二个项目 规格 第一个项目将折叠 我还想要在折叠 展开事务期间使用一些 C
  • 查找表中缺失的时间间隔

    我有下表 其中包含从多个不同设备每 15 分钟读取一次的值 ID DeviceID Date Value 1 3 24 08 2011 00 00 00 0 51 2 3 24 08 2011 00 15 00 2 9 3 3 24 08
  • java.lang.AbstractMethodError: javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext;

    我正在尝试设置一个将在自定义 JSP 标记中引用的变量 因此我的 JSP 中有如下内容
  • registerTaskProvider 的 ProvideTasks 方法如何工作

    我正在尝试获得新的registerTaskProviderVSCode Task API 中的方法在我的扩展中工作 但到目前为止我还无法完成这项工作 我使用了 npm 扩展作为基础 以下是我遵循的步骤 使用 yo 创建一个新的扩展 更新了
  • python设置浮点精度的函数

    我想做一个功能 def accuracy number index 例如 accuracy 2 5e 10 5 将返回 0 accuracy 49 2 将返回 0 accuracy 50 2 将返回 100 所以基本上它会四舍五入到最接近的
  • Android studio gradle 构建因更新失败

    我最近将 android studio 更新到了 3 2 版本 当我尝试运行旧项目时 我在运行等级构建时收到了旧项目的以下消息 The Android Gradle plugin supports only Kotlin Gradle pl
  • 为使用 mat-autocomplete 的组件编写单元测试

    我是 Angular 的新手 我正在尝试使用 Angular 5 构建一个具有自动完成功能的文本字段 我在中找到了这个例子角度材质文档 https material angular io components autocomplete ex
  • mysql查询两张表

    我需要像这样查询两个表 表一顾客 id companyname phone 1 microsoft 888 888 8888 2 yahoo 588 555 8874 3 google 225 558 4421 etc 表二联系人 id c
  • Double.NaN 在 Windows 11 中导致 System.StackOverflowException (22621.525)

    Note 该代码适用于 Windows 11 22000 1098 及更早版本 但会在 Windows 11 22621 525 上导致堆栈溢出异常 我有一个错误 导致我负责的 C 程序出现大量问题 它在早期的 Windows 版本 包括早
  • 如何将日期插入 Open XML 工作表?

    我正在使用 Microsoft Open XML SDK 2 但在将日期插入单元格时遇到了很大的困难 我可以通过设置毫无问题地插入数字Cell DataType CellValues Number 但是当我对日期做同样的事情时 Cell D
  • 如何从 OpenSSL 中的 perl 脚本生成程序集文件

    在 OpenSSL 版本 1 1 0e 的开源代码中 我看到一些函数定义是由文件夹中存在的 perl 文件生成的 在加密货币内每个文件夹中的 build info 文件中 他们编写了一些行以从相应的 pl 生成 s 例如 为了生成aes p
  • Android 上的可写和可执行位置

    我已经使用 Android NDK 工具链编译了一个二进制文件 并尝试将其部署到设备上 然后 使用 JNI 使用 NDK 构建的应用程序将通过本机代码执行此二进制文件 我希望避免对设备进行root 该二进制文件将由多个应用程序使用 因此我想
  • 如何访问 docker 容器内的 mac os x 麦克风?

    我正在运行一个带有 python 代码的 docker 容器 该容器使用主机 MacBook Pro 内置麦克风录制几秒钟的声音 我面临的部分挑战是确定如何在 Docker 容器内提供访问 共享 Macbook Pro 麦克风 大多数关于堆
  • 数据库在更新时应用所有以前的迁移,而不仅仅是新的迁移

    我正在开发一个网站 截至目前 该网站既有生产数据库又有测试数据库 生产数据库托管在外部 而测试数据库托管在本地 每当我对数据库进行更改时 我都会通过迁移应用更改 添加新的迁移后 我运行更新数据库对我的生产和测试数据库执行命令以保持它们同步
  • 如何在 Spring data r2dbc 中替换 @PrePersist

    我在用spring boot starter data r2dbc 版本 1 1 3 Spring Webflux 应用程序中的模块 我想将实体生命周期回调添加到我的持久层 使用 Spring Data JPA 可以使用注释 例如 PreP
  • 如何在 EF7 或 EF core 中的运行时更改数据库架构

    我的数据库有不同的架构 具体取决于运行时的用户选择 我的代码如下 public partial class FashionContext DbContext private string schema public FashionConte
  • CSS 中的双冒号 (::) 是什么意思?

    双冒号 在 CSS 中意味着什么 例如 input type text ms clear display none 它的意思是伪元素选择器 这意味着element右边在普通 DOM 中不存在 但可以选择 伪元素由两个冒号 后跟伪元素的名称组
  • MigraDoc:设置文档字体

    我想在 MigraDoc 中使用不同的字体 但我很难让它坚持下来 目前 我正在使用以下代码 我将其作为类范围变量 String tPdfFont MonospaceTyperwriter 然后是 MigraDoc 代码本身 Document
  • 对...()感到困惑?

    In 另一个问题 https stackoverflow com a 12417320 636656 sapply substitute as character 在函数内部使用来获取传递给函数的名称 这as character部分听起来不