我试图循环我的多元线性回归图和总结,但我始终遇到一个错误的R,它的状态Error: More than one expression parsed
。我不知道如何解决这个问题,或者是否有更好的方法来实现我想要做的事情,主要是:
Group
Group
为颜色
colNames <- names(df)[c(35:39)]
for(i in colNames){
plt <- ggplot(df,
aes_string(x=df$MachineLength, y=i, fill=df$Group, color=be_nlyl$Group)) +
geom_smooth(method=lm) +
geom_point(size = 2, alpha=0.7) +
labs(title="Machine", subtitle = "Machine Type") +
theme_bw() +
theme(plot.title = element_text(hjust=0.5, face="bold"),
plot.subtitle = element_text(hjust=0.5))
print(plt)
lm_A <- lm(formula = i ~ MachineLength, data = subset(be_nlyl, Group == "A"))
summary(lm_A) %>% print()
lm_B <- lm(formula = i ~ MachineLength, data = subset(be_nlyl, Group == "B"))
summary(lm_B) %>% print()
clz.lm <- lm(formula = i ~ Group + MachineLength + Group:MachineLength, data = df)
summary(clz.lm) %>% print()
ano.lm <- Anova(lm(i ~ MachineLength*Group, data = df))
print(ano.lm)
}
有谁能想到如何实现上述目标呢?谢谢!
发布于 2020-09-10 10:36:06
尝试以下几点:
colNames
的列表来存储所有的输出,这样我们不仅可以打印输出,还可以存储它们。colNames
索引上使用for
循环,而不是实际的列名,这样您就可以使用它作为索引来存储不同对象的输出。aes_string
已被废弃,因此我们使用.data
代词作为变量传递列名。sprintf
创建在lm
函数.中传递的公式字符串。
library(ggplot2)
colNames <- names(df)[c(35:39)]
plt <- vector('list', length(colNames))
lm_A <- vector('list', length(colNames))
summary_lm_A <- vector('list', length(colNames))
summary_lm_B <- vector('list', length(colNames))
lm_B <- vector('list', length(colNames))
clz.lm <- vector('list', length(colNames))
summary_clz.lm <- vector('list', length(colNames))
ano.lm <- vector('list', length(colNames))
for(i in seq_along(colNames)) {
var <- colNames[i]
plt[[i]] <- ggplot(df, aes(MachineLength, .data[[var]], fill= Group, color= Group)) +
geom_smooth(method=lm) +
geom_point(size = 2, alpha=0.7) +
labs(title="Machine", subtitle = "Machine Type") +
theme_bw() +
theme(plot.title = element_text(hjust=0.5, face="bold"),
plot.subtitle = element_text(hjust=0.5))
lm_A[[i]] <- lm(sprintf('%s~MachineLength', var), data = subset(df, Group == "A"))
summary_lm_A[[i]] <- summary(lm_A[[i]])
lm_B[[i]] <- lm(sprintf('%s~MachineLength', var), data = subset(df, Group == "B"))
summary_lm_B[[i]] <- summary(lm_B[[i]])
clz.lm[[i]] <- lm(sprintf('%s~Group + MachineLength + Group:MachineLength', var), data = df)
summary_clz.lm[[i]] <- summary(clz.lm[[i]])
ano.lm[[i]] <- Anova(lm(sprintf('%s~MachineLength*Group', var), data = df))
}
https://stackoverflow.com/questions/63826398
复制相似问题