Цикл for дуже цінний, коли нам потрібно переглядати список елементів або діапазон чисел. Цикл може використовуватися для перебору списку, кадру даних, вектора, матриці або будь-якого іншого об'єкта. Дужки та квадратні дужки є обов’язковими.
У цьому підручнику ми дізнаємось,
- Для синтаксису циклу та прикладів
- Для Повторити список
- Для циклу над матрицею
Для синтаксису циклу та прикладів
For (i in vector) {Exp}
Ось,
R оберне всі змінні у векторі та зробить обчислення, записані всередині exp.
Давайте подивимося кілька прикладів.
Приклад 1 : Перебираємо всі елементи вектора та друкуємо поточне значення.
# Create fruit vectorfruit <- c('Apple', 'Orange', 'Passion fruit', 'Banana')# Create the for statementfor ( i in fruit){print(i)}
Вихід:
## [1] "Apple"## [1] "Orange"## [1] "Passion fruit"## [1] "Banana"
Приклад 2 : створює нелінійну функцію, використовуючи багаточлен x від 1 до 4, і ми зберігаємо її у списку
# Create an empty listlist <- c()# Create a for statement to populate the listfor (i in seq(1, 4, by=1)) {list[[i]] <- i*i}print(list)
Вихід:
## [1] 1 4 9 16
Цикл for дуже цінний для завдань машинного навчання. Після того, як ми навчили модель, нам потрібно упорядкувати модель, щоб уникнути надмірного припасування. Регулювання - це дуже нудне завдання, тому що нам потрібно знайти значення, яке мінімізує функцію втрат. Щоб допомогти нам виявити ці значення, ми можемо скористатися циклом for для перебору діапазону значень та визначення найкращого кандидата.
Для Повторити список
Зациклювання списку так само просто і зручно, як зациклювання над вектором. Подивимось приклад
# Create a list with three vectorsfruit <- list(Basket = c('Apple', 'Orange', 'Passion fruit', 'Banana'),Money = c(10, 12, 15), purchase = FALSE)for (p in fruit){print(p)}
Вихід:
## [1] "Apple" "Orange" "Passion fruit" "Banana"## [1] 10 12 15## [1] FALSE
Для циклу над матрицею
Матриця має двовимірні рядки та стовпці. Для ітерації над матрицею ми повинні визначити два цикли for, а саме один для рядків та інший для стовпця.
# Create a matrixmat <- matrix(data = seq(10, 20, by=1), nrow = 6, ncol =2)# Create the loop with r and c to iterate over the matrixfor (r in 1:nrow(mat))for (c in 1:ncol(mat))print(paste("Row", r, "and column",c, "have values of", mat[r,c]))
Вихід:
## [1] "Row 1 and column 1 have values of 10"## [1] "Row 1 and column 2 have values of 16"## [1] "Row 2 and column 1 have values of 11"## [1] "Row 2 and column 2 have values of 17"## [1] "Row 3 and column 1 have values of 12"## [1] "Row 3 and column 2 have values of 18"## [1] "Row 4 and column 1 have values of 13"## [1] "Row 4 and column 2 have values of 19"## [1] "Row 5 and column 1 have values of 14"## [1] "Row 5 and column 2 have values of 20"## [1] "Row 6 and column 1 have values of 15"## [1] "Row 6 and column 2 have values of 10"