>> length(df[,1]). >> >> Both commands will return n. >> >> However, once dplyr is loaded, >> >> length(df[,1]) will return a value of 1. >> >> length(df$m1) and also length(df[[1]]) will correctly return n. >> >> I know that using length() may not be the most elegant or efficient way to >> get the value of n. However, what puzzles (and somewhat disturbs) me is that >> loading of dplyr affects how length() works, without there being a warning >> or masking message upon loading it. >> >> Any clarification or comment would be welcome. > > Presumably, dplyr changes how [.data.frame works (by altering the default for > drop=, I expect) so that df[,1] is a data frame with 1 variable and not a > vector. And yes, that _is_ somewhat disturbing.
It changes the behaviour for [.tbl_df (tbl_df is a very minor extension of data frame with custom [ and print methods). This is partly an experiment to see what happens when you make [ more consistent - [.tbl_df always returns a data frame, so if you want a vector you have to use [[. Hadley -- http://had.co.nz/ ______________________________________________ R-help@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.