условие имеет длину> 1, и только первый элемент будет использоваться в if else statement
pred=data.frame(seq(1,100,by=2)) obs=data.frame(seq(1,100,by=3)) pr=data.frame(seq(1,200,by=4)) for (i in 1:dim(pred)[2]) { if (pr[,i]>max(pred[,i],na.rm=T)){ pr[,i]=pr[,i]*(max(obs[,i],na.rm=T)/max(pred[,i],na.rm=T))}}
Я получаю ошибку «условие имеет длину> 1, и будет использоваться только первый элемент» любые альтернативы?
- Разница между `% in%` и `==`
- Почему некоторые символы Юникода отображаются в matrixх, но не в кадрах данных в R?
- Извлечение строк для первого вхождения переменной в фрейм данных
- Импорт текстового файла в виде отдельной символьной строки
- Использование '[' квадратная скобка как функция для lapply в R
- обнаружена ошибка segfault в R
- Укажите количество последовательных значений
- Изменение имени переменной в цикле for с использованием R
Если я правильно вас понимаю, вы хотите умножить все значения, соответствующие условию с коэффициентом. Для вашего примера это будет:
pred=data.frame(seq(1,100,by=2)) obs=data.frame(seq(1,100,by=3)) pr=data.frame(seq(1,200,by=4)) condition <- pr[,1] > max(pred[,1],na.rm=T) #set NA values false condition[is.na(condition)] <- F fac <- max(obs[,1],na.rm=T)/max(pred[,1],na.rm=T) pr[condition,1] <- pr[condition,1]*fac #do other stuff if the condition is false