Nested for
loop
I already talk about single for
loop in a previous post. The same way
we did for
loop for a single object, we can do it multiple times.
Here a short example: First import the data from here
library(data.table) #load data.table at least V.1.10 (to have fread function)
data_stand <- fread("data_stand_scale.txt") #read the data
data_stand
Status mark Stand_ID.m pattern_state 1: living NA 1 state1 2: living DBH 1 state2 3: dead dead 1 state1 4: dead mortality 1 state1 5: living NA 2 state3 --- 188: living DBH 38 state2 189: dead dead 38 state1 190: dead mortality 38 state3 191: living NA 39 state1 192: living DBH 39 state1
And then we can try a nested loop like this:
result_table <- NULL #create a NULL vector
for (i in unique(data_stand[, Status])) {
new_data <- data_stand[Status == i]
summary_all <- NULL #create a NULL vector which will be erase at each loop increment
for (y in unique(new_data[, mark])) {
summary <- dim(new_data[mark == y][pattern_state == "state1"])[1]
summary_all <- cbind(summary_all, summary)
rownames(summary_all) <- i #to have the rownames according to the Status level
}
result_table <- rbind(result_table, summary_all)
}
result_table
summary | summary | |
---|---|---|
living | 0 | 5 |
dead | 32 | 23 |
And here are the results. I know that we can do it in a simpler way,
it was just here as an example and before presenting you the foreach
loop which are used to do parallel computing.