在匿名函数内的公式中使用定额

2024-01-18

我尝试使用定额在自定义函数中传递变量名称以进行数据处理并在公式中使用,但我在公式中使用定额不正确。有没有更好的方法来取消引用公式中的参数?

library(dplyr)
library(broom)
library(purrr)
library(tidyr)

foo <- function(mydata, dv, iv, group_var) {
  dv = enquo(dv)
  iv = enquo(iv)
  group_var = enquo(group_var)

  mydata <- mydata %>% 
    group_by(!!group_var) %>% 
    nest() 

  mydata %>% 
    mutate(model = map(data, 
      ~summary(lm(formula(substitute(dv ~ iv)), data = .))
    )) %>%         
    unnest(model %>% map(tidy))
}

foo(mydata=mtcars, dv=mpg, iv=wt, group_var=cyl)

我的代码产生“mutate_impl(.data,dots)中的错误:评估错误:对象不是矩阵。”

这是我试图将其变成函数的代码的工作版本:

mtcars %>% 
  group_by(cyl) %>% 
  nest() %>% 
  mutate(model = map(data, ~summary(lm(mpg ~ wt, data = .)))) %>% 
  unnest(model %>% map(tidy))

您需要使用基本 R 非标准评估与函数,例如lm可以这么说,它们不是“在 tidyverse 中”。

所以你可以将其更改为:

foo <- function(mydata, dv, iv, group_var) {
  flma <- as.formula(paste(substitute(dv), "~", substitute(iv)))
  group_var = enquo(group_var)

  mydata <- mydata %>% 
    group_by(!!group_var) %>% 
    nest() 

  mydata %>% 
    mutate(model = map(data, ~summary(lm(flma, data = .)))) %>%         
    unnest(model %>% map(tidy))
}   

foo(mtcars, mpg, wt, cyl)

如果您知道自己只是在进行简单回归,那就没问题了。为了获得更大的灵活性,只需直接传递公式,如下所示:

foo2 <- function(mydata, flma, group_var) {
  group_var = enquo(group_var)

  mydata <- mydata %>% 
    group_by(!!group_var) %>% 
    nest() 

  mydata %>% 
    mutate(model = map(data, ~summary(lm(flma, data = .)))) %>%         
    unnest(model %>% map(tidy))
}   

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

在匿名函数内的公式中使用定额 的相关文章

随机推荐

  • android facebook api 将图像发布到墙上

    我希望能够使用 facebook android sdk 并发布到 facebook 的链接 我想要的一个例子是 如果您在 Facebook 上 并且在状态部分中输入一个链接 例如 http www google com 当您执行此操作时
  • 如何在 Windows 上使用 JSDoc?

    如果这是一个愚蠢的问题 请原谅我 但我对如何在 Windows 上使用 JSDoc 感到非常困惑 我知道 JSDoc Toolkit 但它有点过时了 谷歌代码存储库建议使用 JSDoc 3 我已经从 Github 下载了 JSDoc 并将
  • 捕获来自节点中任何 EventEmitter 的所有“错误”事件

    Via Node js 文档 https nodejs org api events html 未处理的EventEmitter将使正在运行的进程崩溃 当 EventEmitter 实例遇到错误时 典型的操作是发出 错误 事件 错误事件在节
  • 我可以将二维数组视为连续的一维数组吗?

    考虑以下代码 int a 25 80 a 0 1234 56 int p a 0 0 p 1234 56 第二行是否会调用未定义的行为 那么第四行呢 两条线do导致未定义的行为 下标被解释为指针加法后跟间接寻址 即a 0 1234 p 12
  • 如何创建接受内部 XAML 控件的 UserControl?

    与 Stackpanel 类似 我可以将文本框和按钮等控件作为内部 XAML
  • 带有 React Hooks 的 HoC

    我正在尝试从class component to react hooks with Context API 我无法弄清楚出现错误的具体原因是什么 首先 我的代码 contexts sample jsx import React create
  • OWL/XML 读取问题

    我在使用 Jena 从 Java 读取 OWL XML 文件时遇到问题 我读取 RDF XML 文件没有问题 但每当我从 Protege 创建 OWL XML 文件并尝试读取它时 Java 都会给出以下错误 警告 主要 RDFDefault
  • 如何在 Ruby 中关闭和删除文件?

    假设我在 Ruby 中打开一个文件 如下所示 f File open diagram txt r 现在 为了关闭并删除该文件 我有以下代码 begin f File open diagram txt r ensure if f nil Fi
  • 如何在插件中访问 Maven 的依赖关系层次结构

    在我的插件中 我需要处理依赖关系层次结构并获取有关每个依赖关系以及是否已排除的信息 groupId artifactId 版本等 做这个的最好方式是什么 依赖插件有树目标 http maven apache org plugins mave
  • 如何列出Excel中三列中值的所有可能组合?

    我有三列 每一列都有不同类型的主数据 如下所示 现在 我想要这三个单元格的所有可能组合 就像 aa kk jj aa kk ff aa ll jj aa ll ff aa mm jj 这可以用公式来完成吗 我发现一个公式有 2 列 但我无法
  • Typescript - 基于另一个属性的条件属性

    定义类型时 我们可以根据另一个属性来使一个属性成为必需的吗 一个例子是 type Parent children Child childrenIdSequence string Only make this required when ch
  • 当键盘出现时向上移动视图

    问题 我有一个ViewController有一个子类UIScrollView in it 在scrollView中有3个UITextFields 其中 2 个带有数字键盘 1 个带有UIPickerView键盘 问题是当键盘出现时 它会隐藏
  • 如何退出 win32com 上的 Outlook?

    我有一个检查我的 Outlook 文件夹的脚本 不便的是 我的 Outlook 可能已经打开 或者如果没有打开 脚本将在后台为我打开 Outlook 我想简化它 以便如果我的 Outlook 已打开 则保留它 如果它是由脚本调度的 请随后退
  • DAG 在 RDD 中是如何工作的?

    The 火花研究论文 http www cs berkeley edu matei papers 2012 nsdi spark pdf提出了一种基于经典 Hadoop MapReduce 的新分布式编程模型 声称在许多情况下 特别是在机器
  • “git pull --all”可以更新我所有的本地分支吗?

    我经常有至少 3 个远程分支 master staging 和 production 我有 3 个本地分支来跟踪这些远程分支 更新我所有的本地分支机构很乏味 git fetch all git rebase origin master gi
  • 如何使用应用程序工厂正确设置 Flask-admin 视图?

    我正在尝试设置使用 SQLAlchemy 进行 Flask admin 模型视图 https flask admin readthedocs org en v1 0 9 quickstart model views反对 用户 和 角色 模型
  • 新的 JS SDK 与 OAuth 2.0 在 fbsr_ cookie 中保存子域?

    编辑 此错误已记录 并确认为脸书错误 https developers facebook com bugs 256155664428653 browse search 4e843e6d89a232275456793 现在已经修复了 我正在测
  • Robot Framework 使用 Robot Framework/selenium 获取后台调用

    我正在使用 selenium 测试一个 Web 应用程序 我想检查的是是否有在后台完成的调用 post get 例如我加载 google com 在开发人员选项中我可以看到它执行了一些请求 我调查了文档 https github com r
  • 如何检测ftp文件名是一个目录?

    在 Java 中 我试图删除 ftp 目录 但如果它不为空 我需要通过调用删除其中的所有文件和子目录files ftp dir 我可以从目录中获取列表 但如何判断列表中的项目之一是文件还是子目录 有没有files i IsDirectory
  • 在匿名函数内的公式中使用定额

    我尝试使用定额在自定义函数中传递变量名称以进行数据处理并在公式中使用 但我在公式中使用定额不正确 有没有更好的方法来取消引用公式中的参数 library dplyr library broom library purrr library t