Вложен для циклов в 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