Предполагая, что вы получаете функцию binary()
из пакета compositions
, это должно работать. Я не смог полностью воссоздать ваш код, так как вы не поделились тем, как создается объект xyzmaj
.
if ( xyzmaj == my_mode(x)) {
x <- c(x[length(x)], x[1:length(x)-1])
}
x
Это обрезает последнюю запись вектора x и помещает ее как первая запись, превращая предыдущую первую запись во вторую и т. д. c.
РЕДАКТИРОВАТЬ: Некоторые пояснения, почему ваше решение для l oop не дает ожидаемого вами результата:
Так как вы меняете x
в for l oop, первое значение в векторе просто распространяется во всем векторе, так как на второй итерации x[i]
было установлено на 0
на первой итерации и скоро. Эта проблема может быть решена циклически, хотя х назад, а не вперед. В дополнение к этому вам все равно придется убедиться, что последняя запись используется в качестве первой записи, для которой вы должны сохранить x
в отдельном объекте, прежде чем начинать изменять x
. Это может выглядеть примерно так:
old_x <- x
for(i in length(x):2){
x[i] <- x[i - 1]
}
x[1] <- old_x[length(old_x)]
x