dplyr 和 tidyr - 使用因子一次性计算大量线性模型

2024-01-04

在阅读了 tidyverse 的更多内容后,我开始立即拟合许多线性模型,如中所述this https://blog.rstudio.org/2016/02/02/tidyr-0-4-0/。也就是说,我会按照以下方式做一些事情:

library(dplyr)
library(tidyr)
library(purrr)
df <- data.frame(y = rnorm(10), 
                 x1 = runif(10),
                 x2 = runif(10))

df %>%
  gather(covariate, value, x1:x2) %>% 
  group_by(covariate) %>% 
  nest() %>% 
  mutate(model = map(.x = data , .f = ~lm(y ~ value, data = .))) %>% 
  mutate(rsquared = map_dbl(.x = model, .f = ~summary(.)$r.squared))

问题是,当变量类型不同时,例如当一个是数字而一个是因子时,这种方法会失败,因为gather()函数将强制整体value向量化为因子。例如,

df <- data.frame(y = rnorm(10), 
                 x1 = runif(10),
                 x3 = sample(c("a", "b", "c"), 10, replace = TRUE))

df %>%
  gather(covariate, value, x1:x3) %>% 
  sapply(class)

随后是警告

Warning message:
attributes are not identical across measure variables; they will be dropped 

          y   covariate       value 
  "numeric" "character" "character" 

and the value列是一个字符,所以技巧nest()将不再起作用,因为所有协变量都将作为因子放入。

我想知道是否有tidy这样做的方法。


您可以在拟合模型时转换类型,但您应该按照注释中指出的那样小心行事,因为这可能会产生意想不到的后果。

如果您仍然想转换,您可以使用type_convert from readr在整个框架上或type.convert就在“值”向量上。

Using type_convert:

mutate(model = map(.x = data , .f = ~lm(y ~ value, data = readr::type_convert(.))))

Using type.convert:

mutate(model = map(.x = data , .f = ~lm(y ~ type.convert(value), data = .)))

作为链的一部分,其中任何一个都会导致本例所需的结果:

df %>%
    gather(covariate, value, x1:x3) %>% 
    group_by(covariate) %>% 
    nest() %>% 
    mutate(model = map(.x = data , .f = ~lm(y ~ type.convert(value), data = .))) %>% 
    mutate(rsquared = map_dbl(.x = model, .f = ~summary(.)$r.squared))

# A tibble: 2 x 4
  covariate              data    model   rsquared
      <chr>            <list>   <list>      <dbl>
1        x1 <tibble [10 x 2]> <S3: lm> 0.33176960
2        x3 <tibble [10 x 2]> <S3: lm> 0.06150498
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

dplyr 和 tidyr - 使用因子一次性计算大量线性模型 的相关文章

  • 正则表达式字符串中第一个和最后一个非点的位置

    我希望找到字符串的第一个和最后一个非点元素的位置 理想情况下我想这样做regex在基地R 我已经写过R解决问题的代码 不过 我对一个感兴趣regex解决方案 感谢您的任何建议 这是一个示例数据集和R代码以获得所需的结果 此代码拆分字符串并使
  • 使用 pracma::findpeaks 识别持续峰值

    我的语法有问题peakpat内的选项findpeaks内的函数pramcaR 包 v 2 1 1 我使用的是 R 3 4 3 x64 Windows 我希望该函数能够识别可能有两个重复值的峰值 并且我相信该选项peakpat这就是我能做到的
  • 如何使用 R 计算成为列表中中位数的概率?

    假设我有以下数据集 其中显示了假设实验的每个状态的三个观察结果的列表 state lt c Iowa Minnesota Illinois outcome lt list c 5 11 11 c 3 12 8 c 9 14 2 dat lt
  • 通过间接引用列来修改数据框中的某些值

    我正在整理一些数据 我们将失败的数据分类到垃圾箱中 并按批次计算每个分类箱的有限产量 我有一个描述排序箱的元表 这些行按升序测试顺序排列 一些排序标签带有非语法名称 sort tbl lt tibble tribble weight lab
  • 在 R 格子包中微调点图

    我正在尝试为不同的数据集和不同的算法绘制一堆 ROC 区域 我有三个变量 方案 指定所使用的算法 数据集 是正在测试算法的数据集 以及 Area under ROC 我正在 R 中使用lattice库 命令如下 点图 方案 Area und
  • 在 R 中使用 lapply 绘制多个数据帧

    我正在尝试使用 lapply 函数绘制多个数据帧 每个数据帧一个图 但是尽管有关此主题的所有帖子我都找不到答案 因为我不断收到错误 图的输出列表为空 我的数据结构如下 df1 lt mtcars gt group by cyl gt tal
  • 只读取选定的列

    谁能告诉我如何仅读取下面每年数据的前 6 个月 7 列 例如使用read table Year Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 2009 41 27 25 31 31 39 2
  • 使用 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
  • 基于时间窗口的不规则时间序列的优化滚动函数

    有没有办法使用 rollapply 来自zoo包或类似的东西 优化功能 rollmean rollmedian等 使用基于时间的窗口计算滚动函数 而不是基于大量观察的函数 我想要的很简单 对于不规则时间序列中的每个元素 我想计算一个具有 N
  • 在 r 中的 group_by 之后建模后取消列表列的嵌套

    我想对所有组进行线性回归group by 将模型系数保存在列表列中 然后使用 unnest 扩展列表列 这里我用的是mtcars以数据集为例 注 我想用do here becausebroom tidy 不适用于所有型号 mtcars gt
  • ggplot2:如何标记事件发生的日期

    我想从第二个情节中获取第一个情节的信息 第二张图表示事件发生的天数 它看起来更宽 因为它没有图例 但它是相同的时间尺度 我选择在第一个图中手动分配颜色 I would like to overlay the second plot dots
  • 将不均匀的层次列表转换为数据框

    我认为还没有有人问过这个问题 但是有没有一种方法可以将具有多个级别和不均匀结构的列表的信息组合成 长 格式的数据帧 具体来说 library XML library plyr xml inning lt http gd2 mlb com c
  • 投资决策:R中的NPV、IRR、PB计算

    我正在尝试计算不同数量项目的净现值 NPV 内部收益率 IRR 和投资回收期 PB 时间 以评估哪个投资项目提供最佳回报 到目前为止 我可以为每个项目单独计算几行代码 但我想做的是 编写一个函数 它接受一个包含许多不同项目及其现金流的矩阵
  • 如何使用 SparkR 1.6.0 写入 JDBC 源?

    使用 SparkR 1 6 0 我可以使用以下代码从 JDBC 源读取数据 jdbc url lt jdbc mysql localhost 3306 dashboard user
  • 删除极坐标图边缘的多余空间和圆环

    我有一个极坐标图ggplot2我已经非常接近完成 相当简单的情节 我已经能够在删除矩形边框方面获得帮助 但我不需要删除最后一个范围轮廓与带有方位角标签的绘图周围的环之间的额外空间 我希望该图的边界为 15 000 而不是 15 214 我编
  • applyStrategy 错误

    我是R新手 最近运行后遇到以下错误applyStrategy函数来自quantstrat包裹 Error in eval expr envir enclos object signal not found Error in colnames
  • 闭包作为数据合并习惯的解决方案

    我正在尝试解决闭包问题 而且我think我发现了一个案例 他们可能会有所帮助 我有以下几部分需要处理 一组正则表达式 旨在清理状态名称 位于函数中 具有州名称 上述函数创建的标准化形式 和州 ID 代码的 data frame 用于链接两者
  • 如何绘制具有显着性水平的箱线图?

    前段时间问了一个关于绘制箱线图的问题Link1 https stackoverflow com questions 14604439 plot multiple boxplot in one graph 我有一些包含 3 个不同组 或标签
  • 如何使用 dplyr 独立过滤每列的行

    我有以下内容 library tidyverse df lt tibble tribble gene colB colC a 1 2 b 2 3 c 3 4 d 1 1 df gt A tibble 4 x 3 gt gene colB c

随机推荐

  • 用Java向多个收件人发送邮件

    我想使用以下方法向多个收件人发送消息 message addRecipient Message RecipientType TO String arg1 Or message setRecipients Message RecipientT
  • 对于 Windows 窗体来说,PostMessage to self 相当于什么?

    我正在编写一个源自的自定义控件System Windows Forms Control 该控件正在使用Control KeyDown事件 观察击键 我应该处理一些击键 例如
  • 识别相同 OleDbException 类型的异常

    我有以下代码来验证另一个应用程序是否以独占模式打开 MSAccess 2003 数据库 数据库已有密码 OleDbConnectionStringBuilder conString new OleDbConnectionStringBuil
  • 将矩阵图像定位在图像视图的中心

    我创建了一个图像库 一切正常 需要放大和移动图像 ImgView setScaleType ImageView ScaleType MATRIX 当我这样做时 我得到的图像很小 所以我调用了该方法 scaleFactor view getW
  • C# 将函数源代码转换为字符串

    在 C 中 有没有办法将函数的源代码转换为字符串 有点像 JavaScript 中的实现方式 我需要这个 因为我正在为 Asp Net 控件编写一些文档 并且希望在结果旁边显示原始源代码 而不是复制 粘贴它 简短的回答 不 长答案 您可以使
  • android 上的 chromium 中的 kiosk 模式或全屏模式

    我已经为我的 Android 设备构建了一个 chromium ContentShell 如下所述 https code google com p chromium wiki AndroidBuildInstructions https c
  • plpgsql CREATE FUNCTION 在“CREATE”处或附近出现语法错误

    即使我清空所有 DECLARE 块和 BEGIN END 块并尝试返回一个字符串 似乎也无法将此函数创建为 Create 谁能帮我解决我在这里做错的事情吗 尝试在 pgAdminIII Ubuntu 中执行此命令 CREATE OR REP
  • 如何获取给定字符串中数字字符的总数? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 如何计算字
  • 每个标记的可变宏扩展

    假设我有一个宏 一个只调用函数的简单宏foo对于不同类型 define FOO type foo type 一次 假设我想将这个东西称为多种不同类型 具体来说 foo int foo float foo point2d 我想用一个名为的宏生
  • Docker-compose 默认排除服务

    如果我在 docker compose 项目中定义了很多服务 如何从默认服务中排除某个服务docker compose up命令 例如 我有一个 nginx 服务和一个 ssl 服务 它们发生冲突 因为它们都消耗端口 80 所以我怎样才能使
  • Java 模式在“ABC”中查找两组两个字母

    我有一个这样定义的模式 private static final Pattern PATTERN Pattern compile a zA Z 2 在我的代码中我正在这样做 Matcher matcher PATTERN matcher m
  • 我想在android中读取图像中的exif信息。我可以从图库中的图像读取 exif,但无法读取从相机拍摄的 exif 照片

    如上图所示 我选择的是拍照 exif信息为空 我从手机选项中选择了图像 并且 exif 信息不为空 现在可以通过 ExifInterface 支持库从流中读取 EXIF 数据 compile com android support exif
  • textarea 的 window.getSelection() 在 Firefox 中不起作用?

    我正在尝试获取 HTML 页面上的选择文本 我使用下面的代码 并且window getSelection 文本区域接缝在 Firefox 中不起作用 但在 Google Chrome 中运行良好 我使用的是 Firefox 24 和 chr
  • 在android中安装应用程序时创建文件夹

    我们可以在应用程序安装期间在设备的内部存储上创建一个目录吗 创建该目录后 我需要将一些图像和音乐从我们的 res 文件夹复制到该目录 有人对在安装时创建目录有什么想法吗 提前致谢 public void onCreate Bundle sa
  • 如何查看用C/C++编写的函数的源代码? [复制]

    这个问题在这里已经有答案了 一般来说 用 R 编写的函数的源代码只需在 R 控制台上输入函数名称即可查找 对于用 C 或 C 编写的函数如何做到这一点 例如当我尝试查找代码时lapply 函数 它向我展示了这个 function X FUN
  • 减少寻找 N 线交点所需的时间

    有N水平或垂直的线段 现在我需要找出交点总数和每条线段的交点总数 N可以达到100000 我尝试检查每一对线 答案是正确的 但我需要减少它所花费的时间 这是我的代码 using namespace std typedef struct Po
  • 在 Android 中检查并启用磁传感器校准

    我在 Android 应用程序中使用磁传感器校准来实现增强现实 当应用程序长时间使用时 传感器校准会逐渐减少 有没有办法检查校准并自动启用或提示用户再次进行手动校准 不幸的是 对于 AR 类型的应用程序 我不知道如何知道磁传感器是否已正确校
  • Find_by_sql 作为 Rails 范围

    Sitepoint 的 r937 非常友善地帮助我找出从数据库返回正确结果所需的查询 我需要的是能够使用这个查询作为范围 并且能够将其他范围链接到这个范围上 查询是 SELECT coasters FROM SELECT order rid
  • JavaScript:“函数体后缺少 } 语法错误”

    好吧 你知道这个错误了 但是我到底为什么会收到这个错误呢 当它在本地运行时 我根本没有收到任何错误 但是当我上传我的项目时 我遇到了这个恼人的语法错误 我已经检查过Firebug https en wikipedia org wiki Fi
  • dplyr 和 tidyr - 使用因子一次性计算大量线性模型

    在阅读了 tidyverse 的更多内容后 我开始立即拟合许多线性模型 如中所述this https blog rstudio org 2016 02 02 tidyr 0 4 0 也就是说 我会按照以下方式做一些事情 library dp