условие имеет длину> 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, и будет использоваться только первый элемент» любые альтернативы?

Если я правильно вас понимаю, вы хотите умножить все значения, соответствующие условию с коэффициентом. Для вашего примера это будет:

 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 
  • Почему используется `<< -` нахмурился и как я могу его избежать?
  • backtransform `scale ()` для построения графика
  • Печать новых строк с помощью print () в R
  • Как увеличить количество столбцов с помощью R в Linux
  • Альтернатива expand.grid для data.frames
  • Добавление текста в таблицу grid.table
  • Программируемая версия подмножества - для оценки ее состояния при вызове из другой функции
  • определить параметр $ right с переменной в R
  • добавление NA, чтобы все элементы списка равны длине
  • Тест anova терпит неудачу на lme fits, созданный с помощью вставленной формулы
  • Автоматически создавать формулы для всех возможных линейных моделей
  • Давайте будем гением компьютера.