【发布时间】:2016-08-25 03:23:34
【问题描述】:
我正在尝试创建一个 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 不存在于数据框中,要么是因为我的数据中某处存在相同的变量名。到目前为止我还没有找到。
【问题讨论】:
-
@ZheyuanLi 好的,我去编辑一下。
-
太棒了,谢谢@Chriscross 我们实际上鼓励您使用
dput()来共享数据而不是链接,但这次不要担心。 -
我能看到的一个问题是:lm(i ~ AcquisitionTimes, data = raw_data)。这不起作用的原因是因为
i在这里是一个字符串,与公式其余部分的格式不同。您可以通过以下方式解决此问题:lm(paste(i, "~ AcquisitionTimes"), data = raw_data)。 -
我认为你不能只在公式中使用
i来循环遍历。公式使用非标准评估,因此它将i字面上作为一个名为i的变量,而不是循环通过你的i作为循环变量。