如何解决将变量粘贴到方括号内
我正在尝试创建一个函数,该函数创建多个线性模型,将标准错误聚类,然后将其作为列表返回。为此,我创建了这些功能。
Sq_Diag <- function(x){
sqrt(diag(x))
}
#Function for clustering standard-errors on a list of lm-models
Cl_SE <- function(Models,Cluster) {
Cov <- lapply(Models,cluster.vcov,cluster = Cluster )
SE <- lapply(Cov,Sq_Diag)
}
#Function for creating lm-models,based on a given X and a set of controls
LM_Creater <- function(x,N_Lead,CV) {
Form <- as.formula(paste(paste(x,sep = "_"),"~",x,"+",paste(CV,collapse = "+")))
Model_Fit <- lm(Form,na.action = "na.exclude",data = df)
}
使用它们时,我只需lapply()
到变量名向量即可。
Dep_Var <- c("Var1","Var2","Var3")
Cntrl_Var <- c("Var4","Var5","Var6")
通过此代码,一些变量被赋予了先导
df <- df %>%
group_by(id) %>%
mutate_at(3:14,list(lead_5 = dplyr::lead),5)
#Returns two lists,one with the models and one with the SE
One_Mods <- lapply(Dep_Var,LM_Creater,N_Lead = "lead_1",CV = Cntrl_Var)
CC_SE_One <- Cl_SE(One_Mods,dfb$id)
现在,我想对公式中的因变量运行log()
。我已经尝试将其简单地添加到Dep_Var向量中,但这在N_Lead
函数中与LM_Creater
参数一起使用。我还尝试过更改功能,例如:
LM_Creater <- function(x,CV) {
Form <- as.formula(paste(paste(paste("log("x"+1)"),collapse = "+")))
Model_Fit <- lm(Form,data = df)
}
但是,在该位置放入新的past()
会使R尝试在字符变量(即因变量的名称)处评估函数。当然那会返回一个错误,指出不可能使用“ log(字符)”。
关于如何实现这一目标的任何线索吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。