R & quosures - 如何获取作为函数参数传递的向量中包含的符号名称?

2024-02-04

我想写一个R函数arg2str返回作为参数输入的符号的名称(即字符串向量)。

对于最简单的情况,我只有一个输入符号:

library ("rlang")

arg2str.v0 <- function (arg) rlang::quo_name (enquo (arg))
arg2str.v0 (a)
## [1] "a"

如果我有多个符号,我可以使用三点结构:

arg2str.v1 <- function (...) sapply (enquos (...), rlang::quo_name)
arg2str.v1 (a, b, c)
##             
## "a" "b" "c"

(附属问题:为什么结果字符串向量显示为带有初步换行符而不是初步换行符[1]在这种情况下?)

但我实际上想处理符号向量。然而:

sym2str.v1 (c(a, b, c))
##
## "c(a, b, c)"

我如何调整我的功能来做到这一点?


我的第一直觉是首先使用以下方法引用参数向量中包含的符号sapply(而不是引用参数向量本身),然后应用rlang::quo_name到结果向量。但似乎参数向量中的符号是在sapply before enquote对它们每个人进行调用:

arg2str.v2 <- function (args) {
    enquo_args <- sapply (args, enquo)
    lapply (enquo_args, rlang::quo_name)
}
arg2str.v2 (c (a, b, c))
## Error in lapply(X = X, FUN = FUN, ...) : object 'a' not found

使用 rlang 约定,这应该可以工作:

return_args <- function(args){

    args_expr <- enexpr(args)

    if(length(args_expr) == 1) {
        args_vars <- as.list(args_expr)
    } else {
        args_vars <- as.list(args_expr)[-1]
    }

    sapply(args_vars, quo_name)
}


return_args(c(a, b, c))
[1] "a" "b" "c"

return_args(a)
[1] "a"

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

R & quosures - 如何获取作为函数参数传递的向量中包含的符号名称? 的相关文章

  • R 忽略空值的矩阵列的成对比较

    我有一个数组 我想获取它之间的相似度的度量values在每一列中 我的意思是我希望比较数组的成对列之间的行 并在它们的值匹配时增加一个度量 对于两列来说 所得的测量值最大值将完全相同 本质上我的问题与这里讨论的相同 R 两两比较矩阵中的所有
  • 如何使用 R vctrs 包构建一个可以与 c() 结合的对象

    我试图了解如何用向量构建对象 我认为这很简单 但是当我在我的对象上使用 c 时遇到了麻烦 我们的对象有两个属性 x 和描述符 在本例中都是字符串 我的对象将具有不同类型的属性 我们构建了一个构造函数 new toy vector 我还没有在
  • 无法使用include_graphics在Rmarkdown中插入png(错误:文件不是PNG格式)

    这个错误很奇怪 当我编织文档时 出现以下错误 Quitting from lines 42 43 sigminer doc Rmd Error in png readPNG path native TRUE info TRUE file i
  • 使用 Visual Studio 构建 R 包 (C API)

    我正在尝试使用 Visual Studio 构建一个简单的 R 包 这是我的代码 include
  • R 中第三维的平均值

    R中是否有任何快速方法或内置函数来计算基于第三维的平均值 例如我的数组是 1 1 2 1 1 3 2 2 4 2 1 2 1 11 13 2 12 14 3 1 2 1 21 23 2 22 24 我的输出是 1 2 1 mean 1 11
  • 在开发模式下安装包(R源未编译成Rdb)

    我需要修改R代码在一个R具有 Fortran 绑定的包 当我安装软件包时 我看到存储库目录没有源代码 但是 Rdb而是二进制文件 我看了看devtools包 但我仍然不清楚如何在不编译 R 源部分的情况下安装该包 类似于 python py
  • PCA 图中带有名称的工具提示

    我想用 ggplotly 生成交互式绘图 工具提示应该显示变量的名称 interactive lt ggplotly pca dynamicTicks T tooltip c x y label list pca 是 PCA 的可视化 su
  • 错误:“tidyverse”的包或命名空间加载失败:“namespace:dplyr”未导出对象“relocate”

    我使用以下命令安装了 tidyverse install packages tidyverse 但是安装后 当我使用以下命令调用库时 library tidyverse 我收到此错误 Error package or namespace l
  • R:使用 RGDAL 和 RASTER 包时抛出错误

    给所有可能相关的人 这是源代码 GRA D1 lt raster files 1 Sets up an empty output raster GRA D1 lt writeStart GRA D1 filename GRA D1 tif
  • 在闪亮的应用程序和多个页面中进行身份验证

    在我正在开发的系统中 我有 3 个不同的参与者 用户 管理员 支持团队 使用 Shiny App 我想知道如何向这三个参与者进行身份验证 每个参与者只能访问他们的页面 我发现使用闪亮的服务器专业版可以实现这一点 但它不是免费的 有什么方法可
  • 将值添加到 rCharts hPlot 工具提示

    我想通过 rCharts 向标准 Highcharts 工具提示添加一些额外的值 示例代码 require rCharts df lt data frame x c 1 5 y c 5 1 z c A B C D E name c K L
  • 从 data.frame 创建新列

    我有一个长格式的数据集 其中测量 时间 嵌套在 Networkpartners NP 中 而 Networkpartners NP 又嵌套在人员 ID 中 下面是它的示例 真实数据集有数千行 ID NP Time Outcome 1 11
  • 在 R 中使用 gamlss::lms 选择百分位数曲线

    我正在使用 gamlss 包中的示例代码来绘制百分位数曲线 library gamlss data abdom lms y x data abdom n cyc 30 它正在绘制自己的一组百分位数曲线 如何选择只绘制第 10 50 和 90
  • 使用列表中的数据框:删除变量,添加新变量

    定义一个列表dats有两个数据框 df1 and df2 dats lt list df1 data frame a sample 1 3 b sample 11 13 df2 data frame a sample 1 3 b sampl
  • 网页抓取(R 语言?)

    我想获取中间栏中的公司名称this http www consumercomplaints in bysubcategory mobile service providers page 1 html页面 以蓝色粗体书写 以及登记投诉者的位置
  • 在R中绘制3x3方形网格

    我得到了一个数字列表 n 9 想将它们画在一个 3 3 的正方形网格中 每个网格填充相应的数字 我如何在 R 中执行此操作而不安装额外的软件包 例如情节 非常感谢 这里有一个ggplot解决方案比我预期的要难一点 Setup the dat
  • 如何从类外部更改公共 R6 类方法?

    我希望能够在我的 R6 类中重新定义公共方法 以便它根据该类保存的数据类型进行更改 如下所示 library R6 Simple lt R6Class Simple public list dt mtcars my print functi
  • 用于更改向量中元素顺序的闪亮小部件

    在很多网站上 您都有一个拖放界面来更改列表中元素的顺序 我正在寻找类似的东西闪亮 我希望用户能够拖放列表中的元素 通过更改顺序来更改优先级 现在我有一个滥用的解决方案selectizeInput 这是可行的 但当选择列表变得更大时 它很快就
  • 为 ggplot 定义新的尺度轴变换

    我正在尝试创建一个squared使用 y 轴变换scales trans new但遇到错误 MWE data data frame x 1 10 y runif 10 z rnorm 10 10 library ggplot2 ggplot
  • (R 错误)错误:cons 内存耗尽(达到限制?)

    我正在处理大数据 并且有一个 70GB 的 JSON 文件 我正在使用 jsonlite 库将文件加载到内存中 我尝试过 AWS EC2 x1 16large 机器 976 GB RAM 来执行此负载 但 R 因错误而中断 Error co

随机推荐

  • 将鼠标悬停在类上并修改另一个类

    我有一个网格布局 里面是一个宽度为 64px 的侧边栏 网格 container display grid height 100vh width 100vw grid template areas sidebar header sideba
  • 比较浮点数与 numpy 和 scipy

    numpy 或 scipy 模块中是否有 epsilon 常量 如 Matlab 中的 来比较浮点数 您可以使用np finfo http docs scipy org doc numpy reference generated numpy
  • 重复加载同一张图像

    我的网站的 cms 部分有一个页面 启用了 JavaScript 可以强制选择浏览器 它是一个包含大量图像的日历 img src 1 gif img src 1 gif img src 1 gif img src 1 gif img src
  • 查找跨越文本的多行并使用 PowerShell 进行替换

    我正在使用正则表达式搜索来匹配和替换一些文本 文本可以跨越多行 可能有也可能没有换行符 目前我有这个 regex lt php eval gt Get ChildItem exclude bak Where Object Attribute
  • 在 Eclipse 中添加应用程序启动快捷方式?

    我在 Eclipse 中进行 Android 编程已经大约一年了 我总是通过在项目资源管理器中右键单击我的项目名称 然后依次选择 运行方式 和 Android 应用程序 来启动我的应用程序 一定有更好的方法 有没有办法改变这个 点击三下鼠标
  • IE 输入类型日期未显示为日期选择器[重复]

    这个问题在这里已经有答案了 我在 HTML 中使用输入类型 DATE 在 Chrome 和 Firefox 中一切正常 但 IE 不显示日期选择器 当我使用 JQuery Datepicker 时 我在 Chrome 和 Firefox 中
  • 如何为所有的nosetests测试定义一个设置函数?

    我正在使用带有 python 的谷歌应用程序引擎 并想使用nosetest运行一些测试 我希望每个测试都运行相同的设置功能 我已经进行了很多测试 所以我不想遍历所有测试并复制并粘贴相同的功能 我可以在某处定义一个设置函数并且每个测试都会首先
  • HANDLE 类似于 Linux 中的文件描述符吗?

    HANDLE 类似于 Linux 中的文件描述符吗 据我所知 HANDLE用于处理Windows上的所有资源 例如字体 图标 文件 设备 它本质上只是一个指向保存特定资源数据的内存块的空指针 是的 Windows 句柄与 Unix 文件描述
  • 输出神经元是 1 个好还是 10 个好?

    最好有 1 个输出神经元 输出 0 到 15 之间的值 这将是我的最终值 or 16 个输出神经元输出 0 到 1 之间的值 该值代表该值的概率 示例 我们想通过输入学生的学习小时数和智商来找出他的成绩 范围从 0 到 15 TL DR 我
  • Android Studio:如何查看 android 支持 v4 和 v7 的来源?

    在Android Studio支持库中appcompat 对于 ActionBar 被定义为 Gradle 依赖项 dependencies compile fileTree dir libs include jar compile com
  • 使用 Spring Roo 创建列表 <> 成员

    The 春罗 http www springsource org roo命令field set创建一个 Set 成员 字段集 字段名称 类型 如何创建一个 List 呢 从最新版本 1 2 4 开始 roo 支持列表 field list
  • 字符串包含无效或不受支持的 UTF8 代码点。错误的 UTF8 十六进制序列:

    团队 我正在使用红移版本 8 0 2 使用 COPY 命令加载数据时 出现错误 字符串包含无效或不受支持的 UTF8 代码点 错误的 UTF8 十六进制序列 bf 错误 3 似乎 COPY 试图将 UTF 8 bf 加载到 VARCHAR
  • 如何使用时间戳判断现在是白天还是晚上

    我想从数据框中的 时间戳 列中找出是白天还是晚上 时间戳列的值如下 20 0 14 30 6 15 5 0 4 0 等 我使用了 for 循环 但它白天和晚上随机生成 for x in data timestamp if x gt 12 0
  • HTML 到 PDF(通过 javascript)如何添加 css 或表格?

    在一个项目中 我已将 html 文件转换为 pdf 效果很好 但是此输出未显示 css 设计 现在我需要建议如何使用此 pdf 文件添加 css 设计 这里是js函数代码 function var doc new jsPDF var spe
  • 在 XCode 中哪里输入应用程序参数?

    我是 Objective C 和 iPhone 开发的新手 我在新的 iPhone 3 0 平台上使用 CoreData 我的应用程序执行 但是 我没有从 fetchedResultsController 中获取任何对象 我想查看正在传递给
  • 如何避免超出限制:开车?

    我有一个 gscript 抛出 超出限制 驱动器 当我单击按钮时 我有一个 50 行的列表 一些代码将迭代该列表并为每一行调用 gdscript 这个gd脚本 从模板生成文件 制作副本 在文件上插入一个表 将文件制作为 PDF 将文件移动到
  • OpenId Connect 中用户的唯一 ID 是什么

    我们有一个使用 Asp Net Identity 的 Asp Net 4 5 MVC 应用程序来管理我们的客户数据库 我们目前正在使用 Microsoft 帐户身份验证 我们正在考虑使用 OpenId Connect 以便拥有工作 学校帐户
  • Xvfb 多显示器并行处理?

    对运行多个 xvfb 显示器感到好奇 我有 10 50 个并行运行的脚本实例连接到 xvfb 显示器 运行相同数量的 xvfb 显示器并 1 对 1 连接是否有利 或者多个进程可以共享同一个显示吗 RAM 不是问题 处理能力也不是问题 一台
  • 自动化 GUI 测试 .NET CF (Windows Mobile 5)

    我的公司正在考虑在进行 alpha 测试之前对我们当前的应用程序使用自动化 GUI 测试 我们当前的主要重点是稳健性测试 我们想要实现这一目标的一种方法是可以在几个小时 几天内重复的自动化 UI 测试 对于我们的桌面版本 我们决定使用 Au
  • R & quosures - 如何获取作为函数参数传递的向量中包含的符号名称?

    我想写一个R函数arg2str返回作为参数输入的符号的名称 即字符串向量 对于最简单的情况 我只有一个输入符号 library rlang arg2str v0 lt function arg rlang quo name enquo ar