Я изучаю for loop
в R
. Я пытаюсь понять, как сделать for loop
в конкретном variable
в data.frame
. Я рассмотрел несколько примеров в stackoverflow, таких как Q1, Q2, Q3, но никто не полезен, что я ищу!Как выполнить цикл for для переменной в data.fame?
В качестве примера, используя mtcars
набор данных, скажем, я хочу, чтобы выполнить for loop
в:
взгляд в cyl
и определить для cyl 4,6,8,
записи и замены с strings
(low, medium, high
), соответственно.
for (i in mtcars$cyl) {
if (mtcars$cyl == 4){
print("low")}
if (mtcars$cyl == 6) {
print ("medium")}
if (mtcars$cyl == 8) {
print ("high")}
}
Конечно, это не тот случай!
, что ожидается, что-то вроде этого:
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
новообращенным:
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 medium 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 medium 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 low 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 medium 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 high 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 medium 225 105 2.76 3.460 20.22 1 0 3 1
Любая помощь с объяснения высоко ценится!
Нет необходимости циклов: 'mtcars $ Newcol <- фактор (mtcars $ цил, этикетки = с ("низкий"," средний "," высокий "))' См. '? factor' для деталей. – Frank
Таким образом, обычно предпочитают избегать петель, где это возможно, в Р. Вот почему ответ Фрэнкса и первая часть ответа Д.Б. действительно являются более правильными решениями. Вместо того, чтобы проводить время с циклами, которые медленнее и в конечном итоге становятся намного более сложными, рассмотрите возможность использования функции времени для обучения и удобство использования группы функций «apply». Они превосходят FAR, когда дело доходит до аккуратности и удобочитаемости кода, а также от скорости, с которой они могут выполнять данную операцию. – SeldomSeenSlim
@AronBoettcher благодарит за конструктивный совет! – Daniel