Dear All, I would like to use the 'split' function on the dataframe elements contained in a list L.
For example : > (df <- data.frame(cbind(c(rep('A',2), rep('B',2)), rep(1:4)))) X1 X2 1 A 1 2 A 2 3 B 3 4 B 4 > (L<-split(df, df$X1)) $A X1 X2 1 A 1 2 A 2 $B X1 X2 3 B 3 4 B 4 Now, I would like to split EACH data frame, ie, according to column 2(X2). > lapply(L, split, df$X2) $A $A$`1` X1 X2 1 A 1 $A$`2` X1 X2 2 A 2 $A$`3` [1] X1 X2 <0 rows> (or 0-length row.names) $A$`4` [1] X1 X2 <0 rows> (or 0-length row.names) $B $B$`1` X1 X2 3 B 3 $B$`2` X1 X2 4 B 4 $B$`3` [1] X1 X2 <0 rows> (or 0-length row.names) $B$`4` [1] X1 X2 <0 rows> (or 0-length row.names) Warning messages: 1: In split.default(seq_len(nrow(x)), f, drop = drop, ...) : data length is not a multiple of split variable 2: In split.default(seq_len(nrow(x)), f, drop = drop, ...) : data length is not a multiple of split variable I works but it's dirty. How could I do it properly, without warnings and 0 rows data frame in output ? I thought accessing to the current element of 'lapply' to recuperate the vector of the column 2 would work. i.e: lapply(L,split, L[[current]][,2]) Is there a way to do something like that in R ? Thanks in advance ! - Martial _________________________________________________________________ Découvrez toutes les possibilités de communication avec vos proches [[alternative HTML version deleted]]
______________________________________________ R-help@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.