如何解决使循环为数据帧中的每一列运行lmer模型会产生“可变长度不同”错误R
我正在尝试运行一个for循环,将数据帧中的每一列插入lme4 :: lmer()模型语法并将结果附加到列表中,例如
list_results_univariate <- list()
for (i in names(my_dataset))
{
resultmodel <- lmer(y_variable ~
i + i*timevar1 + i*timevar2 +
(1|Date) + (1|Location),data= my_dataset)
tidy_resultmodel <- tidy_lmer(resultmodel)
list_results_univariate[[i]] <- tidy_resultmodel
}
但结果是:
Error in model.frame.default(data = my_dataset,drop.unused.levels = TRUE,:
variable lengths differ (found for 'i')
数据集不包含NA,也没有单级因子,因为我已经删除了它们。如果我从迭代的名称列表中删除timevar1,timevar2,Date和Location,它仍然会返回相同的错误。
如何在不手动为每个变量编写模型的情况下运行它?
解决方法
您的公式直接包含[[Fit Statistics]]
# fitting method = leastsq
# function evals = 23
# data points = 129
# variables = 2
chi-square = 8.89790022
reduced chi-square = 0.07006221
Akaike info crit = -340.945624
Bayesian info crit = -335.225999
[[Variables]]
fc: 1149.59953 +/- 572.031178 (49.76%) (init = 500)
alpha: 0.64118507 +/- 0.04236375 (6.61%) (init = 0.5)
[[Correlations]] (unreported correlations are < 0.100)
C(fc,alpha) = 0.874
,这意味着lmfit
希望在数据集中找到名为i
的列。您的lmer
变量的长度为1(字符串列名称),但是i
期望变量的长度等于您的i
的长度,因此会出现错误消息。
在循环内部,您应该创建一个公式,将其计算 lmer
为其基础值,然后在y_variable
中使用该公式。例如:
i
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。