使用 purrr::map() 更改和分配新变量名称

2024-05-13

我刚刚开始掌握编写函数并使用 lapply / purrr::map() 使我的代码更加简洁,但显然还没有完全理解它。在我当前的示例中,我想重命名 lm_robust 对象的系数名称,然后更改 lm_robust 对象以合并新名称。我目前这样做:

library(dplyr)
library(purrr)
library(estimatr)

df <- tibble(interest = rnorm(1000), maturity = runif(1000, 1, 12), genderfemale = rbernoulli(1000),
            y = 0.5*interest + 2*maturity - 3*genderfemale + rnorm(1000, sd = 0.25))

model1 <- lm_robust(y ~ interest + maturity + genderfemale, data = df, se_type = "stata")
model2 <- lm_robust(y ~ interest + I(interest^2) + maturity + genderfemale, data = df, se_type = "stata")

rename_coefficients <- function(x) {
  x$term[which(x$term == "interest")] <- "Interest Rate"
  x$term[which(x$term == "I(interest^2)")] <- "Interest Squared"
  x$term[which(x$term == "maturity")] <- "Loan Maturity"
  x$term[which(x$term == "genderfemaleTRUE")] <- "Female Borrower"

  return(x$term)
}

temp <- map(list(model1, model2), rename_coefficients)
model1$term <- temp[[1]]
model2$term <- temp[[2]]

这是可行的,但在我的用例中,我有更多的模型,并且首先分配结果的问题让我很困扰map()临时然后包含该部分model1$term <- temp[[1]]对于每个模型。

一定有更有效的方法来做到这一点吗?


我们可以通过以下方式结合这两个步骤

purrr::map(list(model1, model2), ~{.x$term <- rename_coefficients(.x);.x})

#[[1]]
#                Estimate Std. Error   t value Pr(>|t|) CI Lower CI Upper  DF
#(Intercept)     -0.01957   0.020690   -0.9457   0.3445 -0.06017  0.02104 996
#Interest Rate    0.50310   0.008145   61.7719   0.0000  0.48712  0.51909 996
#Loan Maturity    2.00225   0.002563  781.3051   0.0000  1.99722  2.00728 996
#Female Borrower -2.97232   0.015790 -188.2375   0.0000 -3.00331 -2.94134 996

#[[2]]
#                  Estimate Std. Error   t value Pr(>|t|) CI Lower  CI Upper  DF
#(Intercept)      -0.016819   0.021597   -0.7787   0.4363 -0.05920  0.025563 995
#Interest Rate     0.502921   0.008105   62.0532   0.0000  0.48702  0.518825 995
#Interest Squared -0.002588   0.005618   -0.4606   0.6452 -0.01361  0.008436 995
#Loan Maturity     2.002219   0.002568  779.8058   0.0000  1.99718  2.007257 995
#Female Borrower  -2.972270   0.015799 -188.1354   0.0000 -3.00327 -2.941268 995

这将返回您的模型背面列表term改变了。


或者同样使用lapply

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

使用 purrr::map() 更改和分配新变量名称 的相关文章

  • ggplot 中的错误问题:“grid.Call(”L_textBounds“, as.graphicsAnnot(x$label), x$x, x$y, … 中的错误”[重复]

    这个问题在这里已经有答案了 我试图在 ggplot 中制作一个条形图 其中我通过强制其中一些标签为长度为零的字符串 即 来指定要显示的标签 但是 我收到错误 Error in grid Call L textBounds as graphi
  • 如何在 R 中为传单中的数值变量设置不对称颜色渐变

    我想让传单调色板以零为中心 红白绿发散 我已经尝试过中所说的这个帖子 https stackoverflow com questions 29262824 r center color palette on 0 当我尝试手动创建颜色时 我得
  • 如何获得属于五分位数的x?

    我正在大学学习使用 R 进行计量经济学项目 所以请原谅我的笨拙 基本上 使用并给出 一个矩阵 股票价格 行 天 列 公司股票价格 另一个矩阵 市值 行 天 列 公司市值 我必须收集第三个矩阵每天观察的属于市值分布第一五分位数的股票价格 然后
  • R:将 readRDS 应用于 .Rds 文件名的列表对象

    我有几个包含数据帧对象的 Rds 文件 我想对每个文件应用一个函数并将数据帧绑定到单个数据帧中 但是 当我尝试从文件名列表中读取多个 Rds 文件时 我收到错误 FUN X i 中的错误 从连接读取时出错 readRDS 不适用于列表吗 R
  • 错误:“rjags”的包或命名空间加载失败

    在终端的 conda 环境之一中 我能够成功安装包 rjags 但是 当我在该环境中运行 R 并运行库 rjags 时 出现以下错误 加载所需的包 coda 错误 rjags 的包或命名空间加载失败 rjags 的 loadNamespac
  • 将 sf voronoi 多边形裁剪到边界框时出错

    我正在尝试将 voronoi polygons 使用 sf package 创建 剪辑 到边界框 但它引发了我无法定义的错误 我对 R 的空间世界不太有经验 感谢所有帮助 样本数据 stations lt structure list ST
  • 根据另一列中的键累积一列中的值时出现问题

    我有一个看起来像这样的数据框 我需要使用 PROJ ID 列中的字符串创建一个新的值列 并形成 PROJ NAME 列中的值字符串 这里提供的解决方案 根据 r 中另一列的键累积一列中的值 https stackoverflow com q
  • 将函数应用于 3d 数组的每一层,返回一个数组

    假设您有一个包含行 列和层的 3 维数组 A lt array 1 27 c 3 3 3 想象你有一个函数 它接受一个矩阵作为输入并返回一个矩阵作为输出 就像t 如何将该函数应用于数组的每一层 返回与第一层大小相同的另一个数组 我觉得我应该
  • 仅保留百分比的尾随零

    给出以下示例 library pander tableAbs lt Titanic 1 1 tablePct lt round prop table tableAbs 100 2 table lt cbind tableAbs tableP
  • 比较 R 中的两个字符向量

    我有两个 ID 字符向量 我想比较这两个字符向量 特别是我对以下数字感兴趣 A和B各有多少个ID 有多少个ID在A中但不在B中 有多少个ID在B但不在A 我还想画维恩图 以下是一些可以尝试的基础知识 gt A c Dog Cat Mouse
  • 带 R 的多彩标题

    我想添加颜色某些词在我的图表标题中 我已经能够在这里找到一些先例 http blog revolutionanalytics com 2009 01 multicolor text in r html 具体来说 我希望用撇号括起来的文本 在
  • 如何计算嵌套函数中的粘合表达式?

    我正在尝试嵌套一个函数 该函数将两个字符串粘合在一起 该函数使用组合字符串来命名数据帧的列 然而 问题似乎是粘合表达式没有足够早地评估为字符串 我可以 并且应该 强制在将表达式作为参数传递给另一个函数之前对其进行求值吗 library ti
  • 为什么 geom_boxplot 比基本箱线图识别更多异常值?

    这是一个可重复的示例 与基本箱线图相比 最后一个治疗组又发现了一个异常值 dta lt structure list Treatment c A A A A A A A A A A A A A A A A B B B B B B B B B
  • 16 位以上整数的计算

    我有两个大整数 两者都超过 16 位 确切地说是 20 位 而且我知道由于双精度浮点运算 我在使用这些数字进行计算甚至将它们存储在变量中 独立于编程语言 时受到限制 不过 我想也许gmp图书馆应该处理它们 但不幸的是它没有 可以计算更大的整
  • 如何匹配 R 中的所有匹配项?

    我有 1000 个名字的列表 说A 我还有另外 5 个名字的清单 说B 我想找出这5个名字出现在1000个号码列表中的第几行 例如 Amy 在 A 中可以出现 25 次 B 里有艾米 我想知道 Amy 出现在 A 中的哪些行 我以前使用过
  • 如何将 ggrough 图表另存为 .png

    说我正在使用R包裹ggrough https xvrdm github io ggrough https xvrdm github io ggrough 我有这个代码 取自该网页 library ggplot2 library ggroug
  • 捕获段错误、内存未映射错误

    我试图在 R 中找到 1347 x 209974 矩阵的列的相关性 每次我这样做 使用一个简单的命令cor matrix 我收到消息 caught segfault address 0xffffffffd058abf8 cause memo
  • 从“parallel”包中的非基础 R 包调用函数,而无需在函数中将它们库化

    假设我正在尝试运行以下代码 library gregmisc library parallel myfunction lt function x combinations 10 x 1 10 cl lt makeCluster getOpt
  • 迭代字符串 R 的字符

    有人可以解释一下为什么这不会在 R 中单独打印所有数字 numberstring lt 0123456789 for number in numberstring print number 字符串不就是字符数组吗 在 R 中该怎么做 In
  • 根据R中的前一行和当前行按组计算

    我可以根据 R 中的前一行和当前行进行计算 对于此数据框 df A B 1 2 2 2 2 3 3 4 5 5 B2 A2 0 5 B1 我可以使用这段代码来计算这个函数 for i in 2 nrow df B i lt 1 2 B i

随机推荐