Hi, Petr,

from your example it's not doubtlessly clear to me sure how the sequence of ifs should really be continued, but couldn't a nested loop help? Something like:

for (i in 1:npks) {
 plot(res[[i]]$x, res[[i]]$y, pch=20)

 for (j in 1:i) {
  lines(res[[i]]$x, res[[i]]$fitpk[j,], col=j, lwd=3)}
  }
 }

(However, this seems too simple ...)

 Hth  --  Gerrit


On Tue, 15 Dec 2015, PIKAL Petr wrote:

Dear all

I am stuck with output of some result. Sorry for not providing working example but res is quite a big list and I believe you are able to understand my problem.

I have npks variable, which can be anything from 1 to let say 5.

I get result called here res as a nested list with several components and I want to plot these components based on npks value. I got this far

par(mfrow=c(npks,1)) # slit the device
for (i in 1:npks) {
plot(res[[i]]$x, res[[i]]$y, pch=20)

if (i ==1) { #lines in case npks==1
lines(res[[i]]$x, res[[i]]$fitpk[i,], col=i, lwd=3)}

if(i==2) { # lines in case npks ==2
lines(res[[i]]$x, res[[i]]$fitpk[1,], col=1, lwd=3)
lines(res[[i]]$x, res[[i]]$fitpk[i,], col=i, lwd=3)
}

I can follow this further and expand lines plotting with ifs but it seems to me that there must be better solution I overlooked.

Here is a structure of res

str(res)
List of 2
$ :List of 15
 ..$ intnr  : int 1
 ..$ x      : Named num [1:153] 34.8 34.8 34.9 34.9 34.9 ...
 .. ..- attr(*, "names")= chr [1:153] "2484" "2485" "2486" "2487" ...
 ..$ y      : num [1:153] 3.08 -2.91 5.1 12.1 42.11 ...
 ..$ fit    : num [1:153] 15.2 15.3 15.4 15.5 15.7 ...
 ..$ fitpk  : num [1, 1:153] 2.35 2.49 2.65 2.81 2.99 ...
 ..$ basl   : num [1:153] 258 258 258 258 258 ...
 ..$ baslchg: num [1:153] 12.8 12.8 12.7 12.7 12.7 ...
 ..$ rss    : num 1354
 ..$ num.ker: int 1
 ..$ par    : num [1:6] 12.8649 -0.0409 4549.1417 1.9927 66.939 ...
 ..$ parbl  : Named num [1:2] 12.86 -4.09
 .. ..- attr(*, "names")= chr [1:2] "" "2485"
 ..$ parpks : num [1, 1:5] 35.494 4549.142 715.324 0.129 1.993
 .. ..- attr(*, "dimnames")=List of 2
 .. .. ..$ : NULL
 .. .. ..$ : chr [1:5] "loc" "height" "intens" "FWHM" ...
 ..$ accept : logi FALSE
 ..$ alpha  : num 0.1
 ..$ thresh : Named num 3.81
 .. ..- attr(*, "names")= chr "90%"
$ :List of 15
 ..$ intnr  : int 1
 ..$ x      : Named num [1:153] 34.8 34.8 34.9 34.9 34.9 ...
 .. ..- attr(*, "names")= chr [1:153] "2484" "2485" "2486" "2487" ...
 ..$ y      : num [1:153] 3.08 -2.91 5.1 12.1 42.11 ...
 ..$ fit    : num [1:153] 15 15 15.1 15.1 15.2 ...
 ..$ fitpk  : num [1:2, 1:153] 2.1329 0.0859 2.2666 0.0876 2.4109 ...
 ..$ basl   : num [1:153] 258 258 258 258 258 ...
 ..$ baslchg: num [1:153] 12.8 12.7 12.6 12.5 12.4 ...
 ..$ rss    : num 1325
 ..$ num.ker: num 2
 ..$ par    : num [1:10] 12.8649 -0.0942 4540.4742 2.0373 66.9394 ...
 ..$ parbl  : Named num [1:2] 12.86 -9.42
 .. ..- attr(*, "names")= chr [1:2] "" "2485"
 ..$ parpks : num [1:2, 1:5] 35.5 35.9 4540.5 39.4 715.3 ...
 .. ..- attr(*, "dimnames")=List of 2
 .. .. ..$ : NULL
 .. .. ..$ : chr [1:5] "loc" "height" "intens" "FWHM" ...
 ..$ accept : logi FALSE
 ..$ alpha  : num 0.1
 ..$ thresh : Named num 3.81
 .. ..- attr(*, "names")= chr "90%"


Best Regards
Petr

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to