R 使用lm函数应用循环时出错
我试图对一个数据帧应用一个循环,以便提取每个公司进行的所有回归的beta。 以下是数据的简化版本,用作示例:R 使用lm函数应用循环时出错,r,na,lm,R,Na,Lm,我试图对一个数据帧应用一个循环,以便提取每个公司进行的所有回归的beta。 以下是数据的简化版本,用作示例: Dev_Panel_1 <- structure(list(companyID = c("A:GMGX", "A:GMGX", "A:GMGX", "A:GMGX", "A:GMGX", "A:GPTX", "A:GPTX&q
Dev_Panel_1 <- structure(list(companyID = c("A:GMGX", "A:GMGX", "A:GMGX", "A:GMGX", "A:GMGX", "A:GPTX",
"A:GPTX", "A:GPTX", "A:GPTX", "A:GPTX"),
year = c(2005, 2006, 2007, 2008, 2009, 1983, 1984, 1985,
1986, 1987),
Profitability = c(0.76, 0.1, -0.01, -0.1, 0.04,
0.07, 0.06, 0.05, 0.05, 0.11),
Otminus1 = c(-0.28, -0.28,
-0.44, -0.27, 0.23, 0.11, -0.01, -0.01, 0.02, -0.04)),
row.names = c(NA, -10L), class = "data.frame")
我在多个问题中了解到了这个问题,例如:
但到目前为止,提供的解决方案都不起作用。尝试使用以下方法:
vec <- unique(Dev_Panel_1$companyID)
result <- vector('list', length(vec))
for (i in seq_along(vec)) {
result[[i]] <- coef(lm(Otminus1~Profitability, Dev_Panel_1, companyID==vec[i]))
}
mat <- do.call(rbind, result)
mat
# (Intercept) Profitability
#[1,] -0.1961 -0.0756
#[2,] 0.0568 -0.6290
vec这就像一个符咒!谢谢。你能告诉我我在原始代码中做错了什么吗?在你的for
循环中,你正在做1:length(unique(Dev\u Panel\u 1$companyID)
这意味着I
是1,2,3…在lm
函数中你做Dev\u Panel\u 1$companyID==I,]
其中没有值为1、2、3的公司ID
。
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, …) : 0 (non-NA)
vec <- unique(Dev_Panel_1$companyID)
result <- vector('list', length(vec))
for (i in seq_along(vec)) {
result[[i]] <- coef(lm(Otminus1~Profitability, Dev_Panel_1, companyID==vec[i]))
}
mat <- do.call(rbind, result)
mat
# (Intercept) Profitability
#[1,] -0.1961 -0.0756
#[2,] 0.0568 -0.6290