У меня есть проблема с использованием для цикла в R. Следующего кодадля цикла замены терпит неудачу -1
a <- seq(-2, 5)
for(i in 1:length(a)){
a[i] <- if(a[i] <= 0) "aa" else a[i]
}
должен привести к следующему вектору
> a
[1] "aa" "aa" "aa" "1" "2" "3" "4" "5"
Вместо этого мы имеем следующий результат:
> a
[1] "aa" "-1" "aa" "1" "2" "3" "4" "5"
Почему R не может заменить «-1» на «aa»?
Мы пытались еще одно решение, которое работает отлично:
a <- seq(-2, 5)
b <- NULL
for(i in 1:length(a)){
b[i] <- if(a[i] <= 0) "aa" else a[i]
}
она производит ожидаемый результат:
> b
[1] "aa" "aa" "aa" "1" "2" "3" "4" "5"
Почему последний пример отлично работает и первый не?
Большое вам спасибо за помощь!
С уважением!
Невозможно воспроизвести. Вы где-то ошибаетесь. –
Замечание: хотя ваша петля, кажется, работает нормально, вы можете взглянуть на 'ifelse'. Например. 'ifelse (a <= 0," aa ", a)' – Henrik
@MatthewPlourde: большинство не всегда правильно. –