Вложен для циклов в R

Lasha Khintibidze 30 Январь 2023 14 Июль 2021
  1. Цикл for на языке R
  2. Используйте вложенный цикл for для перебора элементов матрицы в R
Вложен для циклов в R

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

Цикл for на языке R

Цикл for доступен в языке R с той же эвристикой, что и в большинстве языков программирования. Он повторяет данный блок кода несколько раз. Синтаксис цикла for следующий.

for (item in set) {}

item - это объект, который хранит повторяемый элемент изset. Цикл for не возвращает результат, поэтому нам нужно вызывать функцию print для вывода значения word на каждой итерации.

vec1 <- c("ace", "spades", "king", "spades", "queen", "spades", "jack",
           "spades", "ten", "spades")

for (word in vec1) {
  print(word)
}

Выход:

[1] "ace"
[1] "spades"
[1] "king"
[1] "spades"
[1] "queen"
[1] "spades"
[1] "jack"
[1] "spades"
[1] "ten"
[1] "spades"

Мы также можем реализовать цикл for, где индекс отображается как переменная. В этом случае функция length используется для вычисления размера вектора vec1 и выполнения итерации от первого элемента до конца. Обратите внимание, что обозначение 1: важно, и оно указывает начало диапазона. В следующем примере кода создается строковый вектор, копируемый в другой вектор того же размера, с помощью цикла for.

vec1 <- c("ace", "spades", "king", "spades", "queen", "spades", "jack",
           "spades", "ten", "spades")

vec2 <- vector(length = length(vec1))

for (i in 1:length(vec1)) {
  vec2[i] <- vec1[i]
}
vec2

Выход:

[1] "ace"    "spades" "king"   "spades" "queen"  "spades" "jack"   "spades" "ten"   
[10] "spades"

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

Вложенные циклы могут быть реализованы с использованием структуры цикла for. Это можно использовать для перебора элементов матрицы и их инициализации случайными значениями. Обратите внимание, что общие обозначения такие же, как в предыдущем примере, за исключением того, что конец диапазона вычисляется с помощью функций nrow и ncol. nrow и ncol возвращают количество строк или столбцов массива соответственно.

mat1 <- matrix(0, nrow = 5, ncol = 5)
for (i in 1:nrow(mat1)) {
  for (j in 1:ncol(mat1)) {
    mat1[i, j] <- sample(1:100, 1, replace=TRUE)
  }
}
mat1

Выход:

[,1] [,2] [,3] [,4] [,5]
[1,]   13   14   13   67   98
[2,]   28   50   23   55    9
[3,]    3   65   99   17   93
[4,]   18    6   20   50   46
[5,]   51   76   33   26    3

Хотя структура вложенного цикла отлично работает в предыдущем примере кода. Инициализацию матрицы лучше выполнять с помощью функции sample, напрямую связанной в качестве первого аргумента функции matrix, как показано в следующем фрагменте.

mat2 <- matrix(sample(1:100, 25, replace = TRUE), ncol = 5)
mat2

Выход:

[,1] [,2] [,3] [,4] [,5]
[1,]   85   19   26   53   88
[2,]   44   50   66   96   56
[3,]   42   46   37   19   66
[4,]   43   23   13   32   67
[5,]   56   51   21    2   56