【发布时间】:2019-08-09 07:46:55
【问题描述】:
我刚刚开始掌握编写函数和使用 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() 的结果分配给 temp 然后为每个模型包含 model1$term <- temp[[1]] 部分,这让我很困扰。
一定有更有效的方法来做到这一点?
【问题讨论】: