За цикъл в R с примери за списък и матрица

Цикълът for е много ценен, когато трябва да преминем през списък от елементи или диапазон от числа. Цикълът може да се използва за итерация върху списък, рамка с данни, вектор, матрица или всеки друг обект. Скобите и квадратната скоба са задължителни.

В този урок ще научим,

Синтаксис и примери за цикъл

For (i in vector) {
    Exp	
}

Тук

R ще премине през всички променливи във вектора и ще направи изчислението, записано в exp.

За цикъл в R
За цикъл в R

Нека видим няколко примера.

For цикъл в R Пример 1: Преминаваме през всички елементи на вектор и отпечатваме текущата стойност.

# Create fruit vector
fruit <- c('Apple', 'Orange', 'Passion fruit', 'Banana')
# Create the for statement
for ( i in fruit){ 
 print(i)
}

Изход:

## [1] "Apple"
## [1] "Orange"
## [1] "Passion fruit"
## [1] "Banana"

For цикъл в R Пример 2: създава нелинейна функция, като използва полинома на x между 1 и 4 и я съхраняваме в списък

# Create an empty list
list <- c()
# Create a for statement to populate the list
for (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 vectors
fruit <- 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 matrix
mat <- matrix(data = seq(10, 20, by=1), nrow = 6, ncol =2)
# Create the loop with r and c to iterate over the matrix
for (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"