Цикл for в R с примерами для списка и матрицы

Содержание:

Anonim

Цикл 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

Для цикла по матрице

Матрица имеет 2 измерения, строки и столбцы. Чтобы перебрать матрицу, мы должны определить два цикла 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"