Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding lists names as plot titles in lapply call in R

Tags:

plot

r

sample <- 
structure(list(GB05 = structure(c(22L, 34L, 26L, 2L), .Dim = 4L, .Dimnames = structure(list(
    c("98", "100", "102", "106")), .Names = ""), class = "table"), 
    GB18 = structure(c(8L, 14L, 70L), .Dim = 3L, .Dimnames = structure(list(
        c("173", "175", "177")), .Names = ""), class = "table"), 
    GB06 = structure(c(2L, 16L, 48L, 10L, 10L, 6L), .Dim = 6L, .Dimnames = structure(list(
        c("234", "238", "240", "242", "244", "246")), .Names = ""), class = "table"), 
    GB27 = structure(c(2L, 28L, 2L, 2L, 4L, 3L, 2L, 2L, 15L, 
    17L, 4L, 5L), .Dim = 12L, .Dimnames = structure(list(c("145", 
    "147", "149", "151", "156", "159", "165", "167", "169", "171", 
    "173", "175")), .Names = ""), class = "table"), GB24 = structure(c(2L, 
    4L, 41L, 10L, 6L, 2L, 14L, 2L, 3L), .Dim = 9L, .Dimnames = structure(list(
        c("240", "241", "242", "243", "244", "247", "249", "251", 
        "253")), .Names = ""), class = "table"), GB28 = structure(c(30L, 
    22L, 2L, 10L, 2L, 4L, 2L, 2L, 2L), .Dim = 9L, .Dimnames = structure(list(
        c("363", "364", "365", "367", "371", "377", "380", "384", 
        "390")), .Names = ""), class = "table"), GB15 = structure(c(12L, 
    16L, 43L, 2L, 3L, 4L), .Dim = 6L, .Dimnames = structure(list(
        c("142", "144", "146", "147", "148", "152")), .Names = ""), class = "table"), 
    GB02 = structure(c(6L, 78L, 4L), .Dim = 3L, .Dimnames = structure(list(
        c("194", "197", "200")), .Names = ""), class = "table"), 
    GB10 = structure(c(2L, 36L, 7L, 1L, 16L, 20L), .Dim = 6L, .Dimnames = structure(list(
        c("124", "126", "128", "130", "132", "134")), .Names = ""), class = "table"), 
    GB14 = structure(c(3L, 6L, 7L, 37L, 7L), .Dim = 5L, .Dimnames = structure(list(
        c("181", "184", "187", "193", "196")), .Names = ""), class = "table")), .Names = c("GB05", 
"GB18", "GB06", "GB27", "GB24", "GB28", "GB15", "GB02", "GB10", 
"GB14"))

How to get the names in this list to appear as plot titles in this lapply call (one title for each plot) ?

dev.new()
par(mfrow=c(2,5))
lapply(sample,function(x) plot(x,main=names[x]))

I don't understand why main=names[x] won't work.

like image 585
Chargaff Avatar asked Feb 09 '13 16:02

Chargaff


1 Answers

Use lapply on the names of the list items instead:

lapply(names(afn), function(x) plot(afn[[x]], main=x))

enter image description here

To see why you aren't getting your names, run lapply(afn, function(x) names(x)) gives you the names of each list item or something else. Try the same with lapply(names(afn), function(x) x) and compare the difference. Then, remember that we can extract a single list item by name by using [[.

like image 128
A5C1D2H2I1M1N2O1R2T1 Avatar answered Oct 25 '22 19:10

A5C1D2H2I1M1N2O1R2T1