我对此真的很陌生。如果能帮上忙我会很感激!我导入的dataframe是一个包含所有结果的大表,我真的希望使用相同的lmer函数遍历每一列。
for (i in d[c(6:45)]){
para = colnames(d[c(6:45)])[i] #para is parameter
d.lmer <- lmer(get(para) ~ Group*Sex*CS.NCS + (1|Dam), data = d)
d.anova <- anova(d.lmer)
library(emmeans)
d.compare <- emmeans(d.lmer, ~ Sex*Group*CS.NCS) # Sex, Group, and CS.NCS are columns too.
d.contrast <- contrast(d.compare, "consec", simple = "each", combine = TRUE, adjust = "mvt")
d.pairs <- pairs(d.compare)
}然而,我不断地得到
Error in get(para) : object 'NA' not foundpara确实只是一个强大的NA,我不知道它是从哪里来的!
理想情况下,我希望它在for循环中使用此函数写入excel电子表格,但我也不知道如何让file=使用d.lmer函数作为其名称。但这是下一个要处理的问题。
write.xlsx(d.compare, file = "X.xlsx",
sheetName = "Compare", append = FALSE)
write.xlsx(d.contrast, file = "X.xlsx",
sheetName="Contrast", append=TRUE)
write.xlsx(d.pairs, file = "X.xlsx",
sheetName="Pairs", append=TRUE)
write.xlsx(d.anova, file = "X.xlsx",
sheetName="anova", append=TRUE)抱歉,如果这是一个愚蠢的问题--我对R的理解很大程度上来自于Google。
谢谢!
编辑:我应该加一句,这对这个很有效:
d.lmer <- lmer(Blood ~ Group*Sex*CS.NCS + (1|Dam), data = d) #Blood is an example parameter/ column header
d.anova <- anova(d.lmer)
library(emmeans)
d.compare <- emmeans(d.lmer, ~ Sex*Group*CS.NCS) # Sex, Group, and CS.NCS are columns too.
d.contrast <- contrast(d.compare, "consec", simple = "each", combine = TRUE, adjust = "mvt")
d.pairs <- pairs(d.compare)我只是不想手动输入每个列的标题。
发布于 2020-08-25 19:09:52
在没有样本数据的情况下,很难确认这个答案是否有用。然而,您的问题似乎与指定循环的方式有关。目前,您的循环正在数据帧上循环。
x <- d[c(6:45)]
class(x)但是您似乎希望将每一列(索引6到45)添加到回归公式中。
要将para设置为单个列名,您可以将代码的开头调整为如下所示,其中para可以包含在公式中:
# load libraries
library(lme4)
library(emmeans)
# specify that d.pairs is a list
d.pairs <- list()
for (i in colnames(d[c(6:45)])){ # here you loop over the column names
para = i #para is parameter # here para is set to the ith column
f <- as.formula(paste(para, paste("Group*Sex*CS.NCS + (1|Dam)", collapse=" * "), sep=" ~ ")) # here you make a formula
d.lmer <- lmer(f, data = d) # here you use the formula
d.anova <- anova(d.lmer)
d.compare <- emmeans(d.lmer, ~ Sex*Group*CS.NCS) # Sex, Group, and CS.NCS are columns too.
d.contrast <- contrast(d.compare, "consec", simple = "each", combine = TRUE, adjust = "mvt")
d.pairs[[i]] <- pairs(d.compare) # assign pairs output to ith of d.pairs
}https://stackoverflow.com/questions/63576702
复制相似问题