Как создать новый столбец с повторяющимися значениями на основе другого столбца? - PullRequest
0 голосов
/ 27 ноября 2018

Вот что у меня сейчас есть.У меня есть столбец с именем «test1M», который имеет значения 0 или 1. Если значение равно 1, я хочу установить следующие 20 значений в столбце «test1Mxx» на значение 1.

Если я запустилв этом коде я получаю сообщение об ошибке (Ошибка в том, что (data $ test1M [x] == 1) {: аргумент имеет нулевую длину).

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

for(x in data$test1){
  if(data$test1[x]==1){
    data$test2[x+1]=1
    data$test2[x+2]=1
    data$test2[x+3]=1
    data$test2[x+4]=1
    data$test2[x+5]=1
    data$test2[x+6]=1
    data$test2[x+7]=1
    data$test2[x+8]=1
    data$test2[x+9]=1
    data$test2[x+10]=1
    data$test2[x+11]=1
    data$test2[x+12]=1
    data$test2[x+13]=1
    data$test2[x+14]=1
    data$test2[x+15]=1
    data$test2[x+16]=1
    data$test2[x+17]=1
    data$test2[x+18]=1
    data$test2[x+19]=1
    data$test2[x+20]=1}
 }

1 Ответ

0 голосов
/ 27 ноября 2018

Ваш цикл не работает, потому что x - это значение data$test1, а не его индекс.Вам нужно что-то вроде:

data$test2 <- data$test1
for (x in seq_along(data$test1))
  if (data$test1[x] == 1) data$test2[x + 1:20] <- 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...