Well, just for giggles, Gerrit's solution can be easily vectorized (i.e. no
apply()-type stuff needed) IFF the structure of all the data frames are
identical so that rbind() works:
d <-do.call('rbind',Total[select.stat]) ## one data frame to combine
them
all ;-)
d[d$sensor == 'thermometer','code']
Whether this is better, worse, or unneeded, I cannot say.
Cheers,
Bert
On Thu, Dec 15, 2022 at 6:11 AM Gerrit Eichner <
gerrit.eichner at math.uni-giessen.de> wrote:
> Hello, Stefano,
>
> maybe the following example contains what you want to achieve:
>
> Station1 <- data.frame(sensor = c("thermometer",
"raingauge",
> "snowgauge", "anemometer"),
> code = c(2583, 1478, 3178, NA))
> Station2 <- data.frame(sensor = c("thermometer",
"raingauge",
> "snowgauge", "anemometer"),
> code = c(2584, 1479, 3179, 4453))
> Station3 <- data.frame(sensor = c("thermometer",
"raingauge",
> "snowgauge", "anemometer"),
> code = c(2584, 1479, 3179, 4453))
> Station4 <- data.frame(sensor = rev(c("thermometer",
"raingauge",
> "snowgauge", "anemometer")),
> code = c(2584, 1479, 3179, 4453))
> Station5 <- data.frame(sensor = c("raingauge",
"snowgauge",
> "thermometer", "anemometer"),
> code = c(2584, 1479, 3179, 4453))
>
> Total <- list("Station1"=Station1,
"Station2"=Station2,
> Station3 = Station3, Station4 = Station4,
> Station5 = Station5)
>
> select.stat <- paste0("Station", c(1, 4, 5))
> select.sens <- "thermometer"
>
> sapply(Total[select.stat], function(x, sens)
> x$code[x$sensor == sens], sens = select.sens)
>
>
>
> Hth -- Gerrit
>
> ---------------------------------------------------------------------
> Dr. Gerrit Eichner Mathematical Institute, Room 212
> gerrit.eichner at math.uni-giessen.de Justus-Liebig-University Giessen
> Tel: +49-(0)641-99-32104 Arndtstr. 2, 35392 Giessen, Germany
> http://www.uni-giessen.de/eichner
> ---------------------------------------------------------------------
>
> Am 15.12.2022 um 14:52 schrieb Stefano Sofia:
> > Dear R-list users,
> >
> > I have a list of n data frames built as follows:
> >
> >
> > Station1 <- data.frame(sensor = c("thermometer",
"raingauge",
> "snowgauge", "anemometer"), code = c(2583, 1478, 3178,
NA))
> > Station2 <- data.frame(sensor = c("thermometer",
"raingauge",
> "snowgauge", "anemometer"), code = c(2584, 1479, 3179,
4453))
> > ....
> >
> > Total <- list("Station1"=Station1,
"Station2"=Station2, ...)
> >
> > I would need to have a vector with the sensor codes of the
thermometers
> of some stations, let's say of Station1, Station2 and Station5 (i.e.
> c(2583, 2584, 2587)).
> > I tried with lapply, but I have not been able to get what I need.
> > Could you please help me?
> >
> > Thank you
> >
> > Stefano
> >
> >
> >
> > (oo)
> > --oOO--( )--OOo--------------------------------------
> > Stefano Sofia PhD
> > Civil Protection - Marche Region - Italy
> > Meteo Section
> > Snow Section
> > Via del Colle Ameno 5
> > 60126 Torrette di Ancona, Ancona (AN)
> > Uff: +39 071 806 7743
> > E-mail: stefano.sofia at regione.marche.it
> > ---Oo---------oO----------------------------------------
> >
> > ________________________________
> >
> > AVVISO IMPORTANTE: Questo messaggio di posta elettronica pu? contenere
> informazioni confidenziali, pertanto ? destinato solo a persone autorizzate
> alla ricezione. I messaggi di posta elettronica per i client di Regione
> Marche possono contenere informazioni confidenziali e con privilegi legali.
> Se non si ? il destinatario specificato, non leggere, copiare, inoltrare o
> archiviare questo messaggio. Se si ? ricevuto questo messaggio per errore,
> inoltrarlo al mittente ed eliminarlo completamente dal sistema del proprio
> computer. Ai sensi dell'art. 6 della DGR n. 1394/2008 si segnala che,
in
> caso di necessit? ed urgenza, la risposta al presente messaggio di posta
> elettronica pu? essere visionata da persone estranee al destinatario.
> > IMPORTANT NOTICE: This e-mail message is intended to be received only
by
> persons entitled to receive the confidential information it may contain.
> E-mail messages to clients of Regione Marche may contain information that
> is confidential and legally privileged. Please do not read, copy, forward,
> or store this message unless you are an intended recipient of it. If you
> have received this message in error, please forward it to the sender and
> delete it completely from your computer system.
> >
> > --
> >
> > Questo messaggio stato analizzato da Libraesva ESG ed risultato non
> infetto.
> >
> > This message was scanned by Libraesva ESG and is believed to be clean.
> >
> >
> > [[alternative HTML version deleted]]
> >
> >
> > ______________________________________________
> > R-help at 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.
>
> ______________________________________________
> R-help at 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.
>
[[alternative HTML version deleted]]