[R] Avoid for-loop in creating data.frames

baptiste auguie baptiste.auguie at googlemail.com
Thu Dec 10 17:20:37 CET 2009


Hi,

Is the following close enough?

apply(set2, 2, function(x) x[is.na(x)])

HTH,

baptiste

2009/12/10 Andreas Wittmann <andreas_wittmann at gmx.de>:
> Dear R-users,
>
> after several tries with lapply and searching the mailing list, i want to
> ask, wheter and how it is possibly to avoid the for-loop in the following
> piece of code?
>
> set2<-as.data.frame(matrix(rnorm(9),ncol=3))
>
> set2[1,1] <- NA
> set2[3,2] <- NA
> set2[2,1] <- NA
>
> dimnames(set2)[1] <- list(c("A","B","C"))
>
> r <- !is.na(set2)
> imp <- vector("list", ncol(set2))
>
> for (j in 1:dim(set2)[2])
> {
>  imp[[j]] <- as.data.frame(matrix(NA, nrow = sum(!r[,j]), ncol = 1))
>  dimnames(imp[[j]]) <- list(row.names(set2)[r[,j] == FALSE], 1)
> }
>
>
> many thanks and best regards
>
> Andreas
>
> ______________________________________________
> 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.
>




More information about the R-help mailing list