Como criar um loop for aninhado em r (incluindo exemplos)
Um loop for aninhado permite iterar elementos em vários vetores (ou múltiplas dimensões de uma matriz) e executar determinadas operações.
A estrutura básica de um loop for em R é:
for (i in 1:4) { print (i) } [1] 1 [1] 2 [1] 3 [1] 4
E a estrutura básica de um loop for aninhado é:
for (i in 1:4) { for (j in 1:2) { print (i*j) } } [1] 1 [1] 2 [1] 2 [1] 4 [1] 3 [1] 6 [1] 4 [1] 8
Este tutorial mostra alguns exemplos de criação de loops for aninhados em R.
Exemplo 1: loop For aninhado em R
O código a seguir mostra como usar um loop for aninhado para preencher os valores de uma matriz 4×4:
#create matrix
empty_mat <- matrix(nrow= 4 , ncol= 4 )
#view empty matrix
empty_mat
[,1] [,2] [,3] [,4]
[1,] NA NA NA NA
[2,] NA NA NA NA
[3,] NA NA NA NA
[4,] NA NA NA NA
#use nested for loop to fill in values of matrix
for (i in 1:4) {
for (j in 1:4) {
empty_mat[i, j] = (i*j)
}
}
#view matrix
empty_mat
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 2 4 6 8
[3,] 3 6 9 12
[4,] 4 8 12 16
Exemplo 2: loop For aninhado em R
O código a seguir mostra como usar um loop for aninhado para elevar ao quadrado cada valor em um quadro de dados:
#create empty data frame
df <- data.frame(var1=c(1, 7, 4),
var2=c(9, 13, 15))
#view empty data frame
df
var1 var2
1 1 9
2 7 13
3 4 15
#use nested for loop to square each value in the data frame
for (i in 1:nrow(df)) {
for (j in 1:ncol(df)) {
df[i, j] = df[i, j]^2
}
}
#view new data frame
df
var1 var2
1 1 81
2 49 169
3 16 225
Uma nota sobre looping
Em geral, loops for aninhados funcionam bem em pequenos conjuntos de dados ou matrizes, mas tendem a ser bastante lentos com dados maiores.
Para big data, a família de funções do aplicativo tende a ser muito mais rápida, e o pacote data.table possui muitas funções integradas que funcionam com eficiência em conjuntos de dados maiores.
Recursos adicionais
Como iterar sobre nomes de colunas em R
Como adicionar linhas a um quadro de dados em R