R 中依赖非标准评估的函数的包装器

2023-12-22

我写了一个包装ftable因为我需要计算许多变量的频率和百分比的平面表:

mytable <- function(...) {
    tab <- ftable(...,
                  exclude = NULL)
    prop <- prop.table(x = tab,
                       margin = 2) * 100
    bind <- cbind(as.matrix(x = tab),
                  as.matrix(x = prop))
    margin <- addmargins(A = bind,
                         margin = 1)
    round(x = margin,
          digits = 1)
}

mytable(formula = wool + tension ~ breaks,
        data = warpbreaks)

    A_L A_M A_H B_L B_M B_H   A_L   A_M   A_H   B_L   B_M   B_H
10    0   0   1   0   0   0   0.0   0.0  11.1   0.0   0.0   0.0
12    0   1   0   0   0   0   0.0  11.1   0.0   0.0   0.0   0.0
13    0   0   0   0   0   1   0.0   0.0   0.0   0.0   0.0  11.1
14    0   0   0   1   0   0   0.0   0.0   0.0  11.1   0.0   0.0
15    0   0   1   0   0   2   0.0   0.0  11.1   0.0   0.0  22.2
...
Sum   9   9   9   9   9   9 100.0 100.0 100.0 100.0 100.0 100.0

但是,我不能使用子集参数ftable与我的功能,也不与最小mytable <- function(...) ftable(...):

mytable(formula = wool + tension ~ breaks,
        data = warpbreaks,
        subset = breaks < 20)

 Error in eval(substitute(subset), data, env) : 
  ..3 used in an incorrect context, no ... to look in

我知道我可以在数据参数中使用子集data = warpbreaks[warpbreaks$breaks < 20, ]作为一种解决方法,但我希望提高我对 R 的了解。”高级R https://adv-r.had.co.nz/Computing-on-the-language.htm”帮助我理解错误是由于非标准评估造成的,但我没有设法纠正我的代码。

所以我的问题是:

  • 我怎样才能告诉R去寻找breaks in warpbreaks ?
  • 更一般地说,是否有更明显的基本 R 方法来计算单个变量和多个变量的垂直布局中的频率和百分比的平面表? (我可以使用以下命令获得单个变量的垂直布局mytable(x = warpbreaks$tension, row.vars = 1).)

有函数定义但没有...,我得到一个不同的错误:

mytable <- function(formula,
                    data,
                    subset) ftable(formula = formula,
                                   data = data,
                                   subset = subset)

mytable(formula = wool + tension ~ breaks,
        data = warpbreaks,
        subset = breaks < 20)

 Error in xj[i] : invalid subscript type 'closure'

这个错误让我找到了以前没有找到的资源。

Some https://stackoverflow.com/a/27640315/11148823 threads https://stackoverflow.com/a/19259158/11148823让我:

# function 1
mytable <- function(...) {
    mc <- match.call()
    mc["exclude"] <- list(NULL)
    do.call(what = ftable,
            args = as.list(x = mc[-1]))
    #etc
}

The write.csv家人和lm源代码引导我:

# function 2
mytable <- function(...) {
    mc <- match.call()
    mc[[1]] <- quote(expr = ftable)
    mc["exclude"] <- list(NULL)
    eval(expr = mc)
    # etc
}

但是,我正在寻找两种方法(功能 1 和功能 2)的优缺点,因为我不知道是否会偏爱一种方法。到目前为止我刚刚发现do.call可能会慢一些。

更重要的是,这些方法让我遇到了另一个问题:我不能使用我的包装lapply and with不再了。 https://stackoverflow.com/q/55813859

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

R 中依赖非标准评估的函数的包装器 的相关文章

  • 返回数据帧 R 中的下一行

    我有一个看起来像这样的数据框 kind datetime book 2016 04 23 04 23 00 pen 2016 04 23 04 30 00 toy 2016 04 23 06 45 00 我想为数据集中的每一行返回下一行的日
  • ggplot2可以在一个图例中分别控制点大小和线大小(线宽)吗?

    一个使用的例子ggplot2绘制数据点组和连接每组均值的线 并使用相同的映射aes for shape并为linetype p lt ggplot mtcars aes gear mpg shape factor cyl linetype
  • 基于另一个数据集获取数据集的子集

    假设我有一个数据集 即 dat1 ID block plot SPID TotHeight 1 1 1 4 44 5 2 1 1 4 51 3 1 1 4 28 7 4 1 1 4 24 5 5 1 1 4 27 3 6 1 1 4 20
  • LDA with topicmodels,如何查看不同文档属于哪些主题?

    我正在使用 topicmodels 包中的 LDA 我已经在大约 30 000 个文档上运行它 获取了 30 个主题 并获得了主题的前 10 个单词 它们看起来非常好 但我想看看哪些文档属于哪个主题的概率最高 我该怎么做 myCorpus
  • 获取ERLANG中的最长公共子序列

    我是这个 ERLANG 的新手 我了解基础知识 这就像计划 但范围更广 我知道如何创建一个函数 但在创建一个获取最长公共子序列的函数时遇到问题 lcs str1 str2 是一个接受两个字符串并输出一个整数的函数 lcs algorithm
  • strlen(s) 和 (strlen)(s) 之间有什么区别吗? [复制]

    这个问题在这里已经有答案了 在 bstrlib c bstring 库 中 有几个地方在函数调用周围放置了括号 什么目的 代码片段 bstring bfromcstr const char str bstring b int i size
  • 在 R 中向散点图添加线条

    如何向图表添加线条 我做了以下 dat lt data frame xvar 1 20 rnorm 20 sd 10 yvar 1 20 rnorm 20 sd 10 zvar 1 20 rnorm 20 sd 10 plot dat 1
  • R - Plm 和 lm - 固定效应

    我有一个平衡面板数据集 df 本质上由三个变量组成 A B and Y 对于一堆独特识别的区域来说 它会随着时间的推移而变化 我想运行一个回归 其中包括区域 下面等式中的区域 和时间 年份 固定效应 如果我没记错的话 我可以通过不同的方式来
  • 纵向序列数据的三次样条方法?

    我有一个串行数据 格式如下 time milk Animal ID 30 25 6 1 31 27 2 1 32 24 4 1 33 17 4 1 34 33 6 1 35 25 4 1 33 29 4 2 34 25 4 2 35 24
  • 如何计算R中移动窗口内的平均斜率

    我的数据集包含2个变量y 和 t 05s y 每 05 秒测量一次 我正在尝试计算移动中的平均坡度20秒窗口 即计算第一个 20 秒斜率值后 窗口向前移动一个时间单位 05 秒 并计算下一个 20 秒窗口 在以下位置生成连续 20 秒斜率值
  • 多功能测试仪替代 system.time

    我已经看到 我认为是这样 使用了类似于 system time 的函数 它可以同时评估多个函数的时间并输出一个输出 我不记得它是什么 并且用我正在使用的术语进行互联网搜索并没有得到我想要的响应 有人知道我正在谈论的功能的名称 位置吗 你想要
  • 从函数体内访问函数对象的属性

    JavaScript 中的函数也是一个对象 并且可以具有属性 那么有没有办法从它自己的函数体内部访问它的属性呢 像这样 var f function console log some way to access f a f a Test f
  • 绘制点之间的所有线

    我有以下 R 代码 x lt c 0 01848598 0 08052353 0 06741172 0 11652034 y lt c 0 4177541 0 4042247 0 3964025 0 4074685 d lt data fr
  • 如何在C中实现带连分数的自然对数?

    这里我有一个小问题 根据这个公式创建一些东西 这就是我所拥有的 但它不起作用 弗兰基 我真的不明白它应该如何工作 我尝试用一 些错误的指令对其进行编码 N 是迭代次数和分数部分 我认为它会以某种方式导致递归 但不知道如何 谢谢你的帮助 do
  • API 请求和curl::curl_fetch_memory(url, handle = handle) 中的错误:SSL 证书问题:证书已过期

    几天前 我运行了代码几个月 没有任何问题 GET url myurl query 今天我遇到一个错误 Error in curl curl fetch memory url handle handle SSL certificate pro
  • 使用 R 选择第一个非 NA 值

    df lt data frame ID c 1 1 1 2 3 3 3 test c NA 5 5 6 4 NA 7 3 NA 10 9 我想创建一个名为 value 的变量 它是每个单独 ID 测试的第一个非 NA 值 对于只有NA的个体
  • 在 R 中使用 lapply 绘制多个数据帧

    我正在尝试使用 lapply 函数绘制多个数据帧 每个数据帧一个图 但是尽管有关此主题的所有帖子我都找不到答案 因为我不断收到错误 图的输出列表为空 我的数据结构如下 df1 lt mtcars gt group by cyl gt tal
  • 朴素贝叶斯分类器仅基于先验概率做出决策

    我试图根据推文的情绪将推文分为三类 买入 持有 卖出 我正在使用 R 和包 e1071 我有两个数据框 一个训练集和一组需要预测情绪的新推文 训练集数据框 text sentiment this stock is a good buy Bu
  • 使用 Shiny 发布平行坐标图表时出现“错误:路径[1]="”:没有这样的文件或目录”

    我有一个似乎很常见但我还没有找到解决方案的问题 当尝试使用 rCharts Parcoords 发布 Web 应用程序时 出现以下错误 错误 路径 1 没有这样的文件或目录 奇怪的是 该应用程序在我的笔记本电脑上运行得很好 下面是我正在使用
  • ddply 和aggregate 之间的区别

    有人可以通过以下示例帮助我了解聚合和 ddply 之间的区别 数据框 mydat lt data frame first rpois 10 10 second rpois 10 10 third rpois 10 10 group c re

随机推荐

  • 如何在 WPF 中获取 ListView 的选中行值

    我有一个ListView在 WPF 应用程序中CheckBox 我想将所有选中行的值保存在 WPF 列表中 我怎样才能实现这个目标 我的列表视图
  • 使用自动布局“捏合缩放”

    我遵循了许多在网上找到的 捏合缩放 教程 并阅读了有关自动布局的内容 但我无法让它在我的项目中工作 我的整个项目都使用自动布局 所以我不想将其关闭 我正在将一个巨大的 UIImage 例如 长边 5000px 加载到 UIImageView
  • 在 swagger 中处理多个基本路径

    我正在使用 swagger ui 为我们的客户提供 REST API 的良好文档 在内部 我们有两个不同的 jenkin 构建项目的环境 例如 swagger json 可以在两种环境中访问 http www myhost com xyz
  • 如何用简单的英语解释回调?它们与从一个函数调用另一个函数有何不同?

    如何用简单的英语解释回调 它们与从另一个函数调用一个函数并从调用函数中获取一些上下文有何不同 如何向新手程序员解释它们的威力 我会尽量让这个问题变得简单 回调 是由另一个函数调用的任何函数 该另一个函数将第一个函数作为参数 很多时候 回调
  • Emberjs - 临时禁用属性更改通知

    是否有任何简单的方法可以实现临时禁用一个或多个对象属性的通知 我知道你可以推迟他们beginPropertyChanges and endPropertyChanges 但在我明确启用这些更改之前 我根本不希望收到这些更改的通知 先感谢您
  • 如何按自定义字段日期排序 WordPress 帖子?

    我正在制作一个事件侧边栏部分 仅显示接下来的 3 个事件 我已经让自定义帖子类型和自定义字段全部正常工作 但我似乎可以弄清楚如何按事件的开始日期 这是自定义字段值 对帖子进行排序 有没有一个php函数可以比较日期并将它们组织成一定的顺序 我
  • MeteorJS MongoDB 部署错误

    由于某种原因 当我使用 Meteor 部署时 我的服务器出现以下错误 并且我无法访问这些页面 我遇到以下错误 警告错误 没有可用于查询的副本集主副本 读取首选项主要 我正在使用 Meteor 1 1 0 2 并运行meteor deploy
  • RGB 字节与 HSL 之间的转换?

    有没有RGB转换的算法byte数组到 HSLfloat阵列并再次返回 我已经尝试过找到的那个here https stackoverflow com questions 8838264但它似乎有错误 我使用以下类从 HSL 转换为 RGB
  • 可视化嵌套的 JSON 结构

    考虑这个 JSON 对象 department 1 id 1 name Joe Smith email email protected cdn cgi l email protection id 500 name Bun Sam email
  • 从 using 块内的异常中检测 Dispose()

    我的应用程序中有以下代码 using var database new Database var poll Some database query code foreach Question question in poll Questio
  • 将 Javascript 函数作为参数传递给 C++ 函数

    我用 C 声明我的对象 class Action public QObject Q OBJECT Q PROPERTY QString name READ name public Action QObject 0 QString name
  • Libc共享库如何加载到内存中并在进程之间共享?

    我想了解Libc共享库如何加载到内存中并在进程之间共享 是否有一个 libc 实例加载到内存中并在所有进程之间共享 或者是每个进程的内存中的每个 libc 实例 我不清楚 libc 如何在进程之间共享 谢谢 阿迪亚 libc 的一个实例在所
  • 假镜子。你能帮我解决吗?

    这里是 BFG 9000 每次射击都会摧毁三个相邻的阳台 第 N 个阳台毗邻 第一个 射击后 生存怪物对列昂尼德造成伤害 小说的主要英雄 每个怪物一个单位 进一步后续新拍摄等 直到所有怪物 将会灭亡 需要定义最小损坏量 这可以带走列昂尼德
  • 在 Unity App.Config 文件中包含通用类

    我有一类类型ISimpleCache
  • 从已部署的 Azure 应用服务中提取 MachineKey

    我有一个 ASP NET 4 6 Web API 服务作为 Azure 应用服务在单个区域的单个应用服务计划中运行 我们正在修改此服务 使其部署在多个区域 并在前面有一个负载均衡器 每个区域都有自己的应用服务计划 因此 我们需要确保在每个应
  • API 或代码:Hibernate 3 和 4 之间的区别?

    我已经粘贴了休眠3配置文件 SessionFactory 类来配置此 config xml 和带有 JPA 注释的 bean 我想知道我是否在使用休眠4那么代码级别的上下文会发生什么变化 或者外行语言的非常广泛的差异或进步 休眠配置文件
  • Matlab:将全局坐标转换为图形坐标

    如果我通过获取坐标 coords get 0 PointerLocation 我怎样才能将它们转换为通过获得的积分ginput 即我想从中获得相同的值 coords get 0 PointerLocation coords someConv
  • 使用 declarative_base 派生对象的 alembic create_table

    我有一个 Alchemy ORM 对象 from sqlalchemy ext declarative import declarative base Base declarative base class MyORM Base id Co
  • Morningstar 用 python 请求获取 10 年的财务数据

    看来晨星登录解决方案在不使用selenium等无头浏览器 如何登录morningstar com https stackoverflow com questions 48228739 how can i log in to mornings
  • R 中依赖非标准评估的函数的包装器

    我写了一个包装ftable因为我需要计算许多变量的频率和百分比的平面表 mytable lt function tab lt ftable exclude NULL prop lt prop table x tab margin 2 100