进行线性回归时如何修复 r 中的 "Variable Lengths Differ" 错误

How to Fix "Variable Lengths Differ" Error in r When Doing a Linear Regression

我正在尝试创建一个循环遍历我的数据框的 for 循环,运行 是所有列相对于 AcquisitionTime 的线性回归,这是一个双精度值。所有列的长度都相同。最终我只想使用其中一个应用函数而不是 for 循环来执行此操作,但我真的是 r 的新手,应用函数对我来说没有意义。

##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 不存在于数据框中,或者因为我的数据中某处存在相同的变量名。到目前为止我还没有找到。

我已经在我的评论中提到了修复,但以下简单示例可以重现您的错误:

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)