我正在尝试编码固定效果回归,但我有很多虚拟变量。基本上,我的等式的RHS有184个变量。我没有写出来,而是试图创建一个将遍历每一列的循环(我已用一个数字命名每个列)。
这是我到目前为止的代码,但是粘贴不起作用。我可能完全不使用粘贴,但我不确定如何处理这个问题。但是,我收到了一个错误(见下文)。
FE.model <- plm(avg.kw ~ 0 + (for (i in 41:87) {
paste("hour.dummy",i,sep="") + paste("dummy.CDH",i,sep="")
+ paste("dummy.MA",i,sep="") + paste("DR.variable",i,sep="")
}),
data = data.reg,
index=c('Site.ID','date.hour'),
model='within',
effect='individual')
summary(FE.model)
作为列名的示例,当i = 41时,名称应为&#34; hour.dummy41&#34; &#34; dummy.CDH41&#34;等
我收到以下错误:
Error in paste("hour.dummy", i, sep = "") + paste("dummy.CDH", i, sep = "") : non-numeric argument to binary operator
所以我不确定这里的粘贴功能是否合适,或者它是否是循环。我似乎找不到在R中轻松遍历列名的方法。
非常感谢任何帮助!
答案 0 :(得分:1)
暂时无法担心如何使用如此多的术语来拟合模型,您可能希望生成一个字符串,然后将其转换为公式:
#create a data.frame where rows are the parts of the variable names, then collapse it
rhs <- do.call(paste, c(as.list(expand.grid(c("hour.dummy","dummy.CDH"), 41:87)), sep=".", collapse=" + "))
fml <- as.formula(sprintf ("avg.kw ~ %s"), rhs))
FE.model <-pml(flm, ...
我只在第二行输入了两个“假”,但你应该明白这个想法