Viktor Plattner Viktor Plattner - 1 month ago 8
R Question

loop over multi level lists to plot their elements in R

I need your help in the following:

I have multi level lists (lists in lists) and I have to plot their elements on one figure. One plot is easy and it looks like this (sorry about the non-generalized variable names)

plot(powerList$ch1$frequency, powerList$ch1$power, type='hist', xlim = c(0,0.001))


powerList
contains other lists (
ch1
...)

I have to plot
frequency
and
power
in lists
ch1
to
ch13
.

I've tried the following:

created a vector with the channel names (second list)

chNames = c('ch1','ch2','ch3','ch4','ch7','ch8','ch9','ch10','ch11','ch13','ch14','ch15','ch16')


then I've tried to loop over it:
first I created a 4 times 4 window

par(mfrow=c(4,4))

for (i in chNames){
plot(powerList$i$frequency, powerList$i$power, type='hist', xlim = c(0,15))
}

par(mfrow=c(1,1))


I know that the code is wrong. It is just to show clearly what I want to do. Is there a way to do it simply and effectively?

Thank you

Answer

Basically, you just need to loop through the list with indexing.

for (i in seq_along(powerList)) { 
    plot(powerList[[i]]$frequency, powerList[[i]]$power, type='hist', xlim = c(0,15)) 
}
Comments