Переоформить заказ в течение l oop R - PullRequest
0 голосов
/ 09 апреля 2020

Я хочу переупорядочить свои данные в новом кадре данных (список в приведенном ниже примере), в котором первое наблюдение является первым, затем последнее наблюдение - вторым, оба наблюдения удаляются из исходного кадра данных и затем повторяются.

data <- seq(1,12,1)

i <- 1
ii <- 1:length(data)

newData <- seq(1,12,1)

for (i in ii){
  a <- 1
  newData[i] <- data[a]
  i <- i + 1
  b <- as.numeric(length(data))
  newData[i]<- data[b]

  index <- c(a, b)
  data <- data[-index]

  i <- i + 1
}

Я получаю ошибку: «Ошибка в newData [i] <- data [b]: замена имеет нулевую длину», и l oop останавливается на i = 8, а список «data» пуст . </p>

Если я запускаю содержимое l oop, но не самого l oop, я получаю желаемый результат как в этом примере, так и в своей задаче; но, очевидно, я хочу запустить l oop, учитывая размер моих данных.

1 Ответ

1 голос
/ 09 апреля 2020

Как упоминал MrFlick, вы не можете изменить индекс в a для l oop. Но, учитывая, что вам нужен только каждый второй индекс, вы можете указать, что ваше определение l oop, используя

ii <- seq(1,length(data),2)

Однако вам не нужно значение l oop для перестановки элементов вашего векторные данные. вам нужен только вектор вида (первый, второй, второй последний и т. д. c.):

m = matrix(c(1:6,12:7), ncol=2)
i = as.vector(t(m))
newdata = data[i]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...