У меня есть 2 отдельных набора данных с характеристиками одних и тех же людей: положение и размер. Положение будет меняться каждый час в зависимости от размера. Размер также будет меняться каждый час, но не в этом представлении. В любом случае, я делаю это в al oop, который выполняет итерацию каждый час с функциями apply()
для изменения следующего столбца матриц. Мне нужно помочь заставить функции работать, когда ни один из людей не соответствует этим критериям во время этой l oop итерации.
# here is a matrix of positions. the first column is the starting position,
# and this will change throughout, so second column is empty for now.
position <- cbind(c(10,20,10,20,10),c(NA,NA,NA,NA,NA))
# size of individuals. position in next column should change depending on size,
# such that small individuals (size < 5) will move up 5 positions,
# and large individuals (> 8) will move down 7 positions.
size <- c(2,2,3,8,8)
# for small individuals, add 5 to make next position
position[,2][ size < 5] <- mapply(sum,position[,1][size<5],5)
# for large individuals, subtract 7 to make next position
position[,2][ size > 8 ] <- mapply(sum,position[,1][size > 8],-7)
Я продолжаю застревать, когда условие имеет 0 вхождений. В этом случае нет людей с размером> 8, поэтому функция mapply()
не работает. Это дает мне ошибку:
zero-length inputs cannot be mixed with those of non-zero length
Есть ли способ заставить функцию mapply()
ничего не делать, если один из входов равен нулю?
Спасибо.