la condizione ha lunghezza> 1 e solo il primo elemento sarà usato in 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))}} 

Ricevo l’errore “la condizione ha lunghezza> 1 e verrà utilizzato solo il primo elemento” qualsiasi alternativa ??

Se ti capisco correttamente, vuoi moltiplicare tutti i valori che corrispondono a una condizione con un fattore. Per il tuo esempio sarebbe:

 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