Как создать вложенный цикл for в R (включая примеры)


Вложенный цикл for позволяет перебирать элементы в нескольких векторах (или нескольких измерениях матрицы) и выполнять некоторые операции.

Базовая структура цикла for в R:

for (i in 1:4) {
 print(i)
}

[1] 1
[1] 2
[1] 3
[1] 4

И основная структура вложенного цикла for :

for (i in 1:4) {
 for (j in 1:2) {
 print(i\*j)
 }
}

[1] 1
[1] 2
[1] 2
[1] 4
[1] 3
[1] 6
[1] 4
[1] 8

В этом руководстве показано несколько примеров создания вложенных циклов for в R.

Пример 1. Вложенный цикл For в R

В следующем коде показано, как использовать вложенный цикл for для заполнения значений матрицы 4×4:

#create matrix
empty_mat <- matrix(nrow= 4 , ncol= 4 )

#view empty matrix
empty_mat
 [,1] [,2] [,3] [,4]
[1,] NA NA NA NA
[2,] NA NA NA NA
[3,] NA NA NA NA
[4,] NA NA NA NA

#use nested for loop to fill in values of matrix
for (i in 1:4) {
 for (j in 1:4) {
 empty_mat[i, j] = (i\*j)
 }
}

#view matrix
empty_mat

 [,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 2 4 6 8
[3,] 3 6 9 12
[4,] 4 8 12 16

Пример 2. Вложенный цикл For в R

В следующем коде показано, как использовать вложенный цикл for для возведения в квадрат каждого значения во фрейме данных:

#create empty data frame
df <- data.frame(var1=c(1, 7, 4),
 var2=c(9, 13, 15))

#view empty data frame 
df

 var1 var2
1 1 9
2 7 13
3 4 15

#use nested for loop to square each value in the data frame
for (i in 1:nrow(df)) {
 for (j in 1:ncol(df)) {
 df[i, j] = df[i,j]^2
 }
}

#view new data frame
df

 var1 var2
1 1 81
2 49 169
3 16 225

Заметка о зацикливании

Как правило, вложенные циклы for хорошо работают с небольшими наборами данных или матрицами, но они, как правило, довольно медленны с большими данными.

Для больших данных семейство функций применения, как правило, работает намного быстрее, а пакет data.table имеет множество встроенных функций, которые эффективно работают с большими наборами данных.

Дополнительные ресурсы

Как перебрать имена столбцов в R
Как добавить строки во фрейм данных в R

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.