Вложенные циклы if

r for-loop

92 просмотра

1 ответ

Я пытаюсь получить гнездо, если петли прямо в моей голове. В попытке я собрал этот простой скрипт

x<-c(1:9)
for(i in seq(along=x)) {
    if(x[i]<5){
        y<-(x*3)
    } else {
        y<-(x*5)  
    }
}

Он рассчитывает ответ для меня, не давая ошибки. но ответ неверный. Так что не так со сценарием

Автор: ian Источник Размещён: 08.11.2019 11:32

Ответы (1)


3 плюса

Решение

Мы также можем сделать это в два этапа векторизованным способом.

y <- x*5
y[x <5] <- x[x < 5] *3
y
#[1]  3  6  9 12 25 30 35 40 45

Это должно быть быстрее, чем ifelseили forцикл.

Ориентиры

x1 <- 1:1e7
system.time( ifelse(x1 < 1e4, 3 * x1, 5 * x1))
#  user  system elapsed 
#  0.58    0.32    0.91

system.time({ y1 <- x1*5
           y1[x1 < 1e4] <- x1[x1 < 1e4] *3})
#   user  system elapsed 
#   0.17    0.04    0.21 
Автор: akrun Размещён: 20.08.2016 04:13
Вопросы из категории :
32x32