Я создал oop для довольно повторяющейся «функции» или фрагмента кода.
Я делаю фильтр dplyr набора данных на основе двух переменных. Затем я делаю линейную модель, вычисляю средние значения и выполняю тест LSD.
l oop, который я сделал, заполняет переменные в фильтре.
for(x in c("B1", "B2", "B3")){
for(z in c(1:5)){
df <- filter(testb, column1== x, column2 == z )
#rest of functions here
l oop работает отлично. Единственная проблема, с которой я столкнулся, - это когда l oop пытается отфильтровать x: B2 с z: 5, так как эта комбинация не существует в наборе данных. Я получаю следующую ошибку:
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
contrasts can be applied only to factors with 2 or more levels
Я точно знаю, почему это создает ошибку, поскольку у множителя столбца 2 z = 5 не существует. Я бы хотел, чтобы l oop продолжил до следующей переменной столбцов 1 и 2, если это произойдет, поэтому go до x: B3 и z: 1.
Код работает нормально, когда я использую
for(z in c(1:4)){
Но мне не хватает комбинаций x: B1 и x: B3 с z: 5.
Позже я бы хотел сделать больше переменных из column1, но их будет много больше несовпадений с комбинациями x и z.
Кто-нибудь есть советы?