Цикл по векторным обновлениям только первого элемента

#r

#r

Вопрос:

Например, я пытался выполнить цикл по числовому вектору:

 s = c(1, 3, 7, 10, 12, 13)
 

и добавьте начальный 0 к элементу, если это число < 10. Остальное ничего не делает.

Желаемый результат: "00", "04", "07", "10", "12", "13"

К сожалению, я обновил только первый элемент:

[1] "01" "3" "7" "10" ...

 for(i in 1:length(s)) {
     if (s[i] < 10) {
        s[i] <- sprintf("d", s[i])
     }
 }
 

Комментарии:

1. Вам не нужен цикл. Вы можете просто сделать sprintf("d", s) . Но почему 1 превратился в «00», а 3 превратился в «04» в вашем примере?

2. Если вы помещаете одно символьное значение в числовой вектор, то весь вектор преобразуется в символ.

3. @MrFlick извините, это, очевидно, должно быть: «01», «03», «07» и так далее. Большое спасибо, ваше решение работает просто отлично!