我试图创建一个循环遍历我的数据框的for循环,并针对AcquisitionTime
运行所有列的线性回归,这是一个双精度数。所有列的长度都相同。最后我想使用一个apply函数而不是for循环来做这个但是我真的很新,并且apply函数对我没有意义。
##pdf("ROIs_vs_AcquisitionTime_lm.pdf")
x = 0
for (i in names(raw_data)){
if(x > 9){
fit <- lm(i ~ AcquisitionTimes, data = raw_data)
##print(ggplotRegression(fit))
}
x <- x + 1
}
##dev.off()
当我运行此代码时,我收到此错误:
Error in model.frame.default(formula = i ~ AcquisitionTimes, data = raw_data,:
variable lengths differ (found for 'AcquisitionTimes')
导致此错误的原因是什么?我查看是否有任何其他名为raw_data的数据框,但我没有。我甚至清除了R中的对象,看看是否有帮助。我读到的每个地方都说这是因为变量AcquisitionTimes
在数据框中不存在,或者因为我的数据中某处存在相同的变量名。到目前为止,我还没找到。
答案 0 :(得分:1)
我已经在评论中提到了修复,但以下简单示例可以重现您的错误:
data(iris)
i = "Sepal.Length"
lm(i ~ Sepal.Width, data = iris)
你会看到
Error in model.frame.default(formula = i ~ Sepal.Width, data = iris, drop.unused.levels = TRUE) :
variable lengths differ (found for 'Sepal.Width')
要纠正这个问题,我们可以改为:
lm(paste(i , "~ Sepal.Width"), data = iris)
按预期工作:
Call:
lm(formula = paste(i, "~ Sepal.Width"), data = iris)
Coefficients:
(Intercept) Sepal.Width
6.5262 -0.2234
在你的情况下,它将是
lm(paste(i, "~ AcquisitionTimes"), data = raw_data)