[R] remove NAs from list collectively

Dimitris Rizopoulos d.rizopoulos at erasmusmc.nl
Wed Feb 8 12:01:17 CET 2012


Two possibilities are:

lapply(df, function (x) x[!is.na(x)])

and

lapply(df, na.exclude)


I hope it helps.

Best,
Dimitris


On 2/8/2012 11:54 AM, Johannes Radinger wrote:
> Hi,
>
> I am importing dataframe from an Excel file (xlsx package).
> The columns contain acutally measurements for single species and
> the column-length is of variable. As it is imported as a dataframe the difference to the "longest" column is filled with NA.
> To explain it with an example, my dataframe looks like:
>
> A<- seq(1:10)
> B<- c(seq(1:5),rep(NA,5))
> C<- c(seq(1:7),rep(NA,3))
>
> df<- data.frame(A,B,C)
>
>
> Now I'd like to transform that to a list of vectors of different length. Therefore I need to remove the NAs collectively from the single columns...I tried for transforming:
>
> as.list(df)
>
> ...but I don't know how can I remove the NAs now? as.list doesn't take na.rm=TRUE argument. Is there any ready function to perform such tasks?
> Or is there a better way then to assign the data to a list of vectors with variable length?
>
> /johannes
> --
>
> ______________________________________________
> R-help at r-project.org mailing list
> 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.
>

-- 
Dimitris Rizopoulos
Assistant Professor
Department of Biostatistics
Erasmus University Medical Center

Address: PO Box 2040, 3000 CA Rotterdam, the Netherlands
Tel: +31/(0)10/7043478
Fax: +31/(0)10/7043014
Web: http://www.erasmusmc.nl/biostatistiek/



More information about the R-help mailing list