进行线性回归时如何修复 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)
我正在尝试创建一个循环遍历我的数据框的 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)