Я пытаюсь сделать цикл for, который проходит через мой кадр данных и выполняет линейную регрессию всех столбцов против AcquisitionTime
, которая является двойной. Все столбцы имеют одинаковую длину. В конце концов я хочу просто использовать одну из прикладных функций вместо цикла for, чтобы сделать это, но я действительно новичок в r, и функции apply не имеют для меня смысла.Как исправить «переменная длина отличается» Ошибка в 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
Awesome, thanks @Chriscross Мы действительно рекомендуем вам использовать 'dput()' для обмена данными вместо ссылок, но не беспокойтесь об этом на этот раз. –
Одна проблема, которую я вижу, - это: lm (i ~ AcquisitionTimes, data = raw_data). Причина, по которой это не работает, состоит в том, что 'i' является строкой здесь, отличной от формата остальной части формулы. Вы можете исправить это, выполнив: 'lm (paste (i," ~ AcquisitionTimes "), data = raw_data)'. – jav