Kai, > one more question, how can I know if the function is for column > manipulations or for vector?
i still stumble around R code. but, i'd say the following (and look forward to being corrected! :): 1. a column, when extracted from a data frame, *is* a vector. 2. maybe your question is "is a given function for a vector, or for a data frame/matrix/array?". if so, i think the only way is reading the help information (?foo). 3. sometimes, extracting the column as a vector from a data frame-like object might be non-intuitive. you might find reading ?"[" and ?"[.data.frame" useful (as well as ?"[.data.table" if you use that package). also, the str() command can be helpful in understanding what is happening. (the lobstr:: package's sxp() function, as well as more verbose .Internal(inspect()) can also give you insight.) with the data.table:: package, for example, if "DT" is a data.table object, with "x2" as a column, adding or leaving off quotation marks for the column name can make all the difference between ending up with a vector, or with a (much reduced) data table: ---- > is.vector(DT[, x2]) [1] TRUE > str(DT[, x2]) num [1:9] 32 32 32 32 32 32 32 32 32 > > is.vector(DT[, "x2"]) [1] FALSE > str(DT[, "x2"]) Classes ‘data.table’ and 'data.frame': 9 obs. of 1 variable: $ x2: num 32 32 32 32 32 32 32 32 32 - attr(*, ".internal.selfref")=<externalptr> ---- a second level of indexing may or may not help, mostly depending on the use of '[' versus of '[['. this can sometimes cause confusion when you are learning the language. ---- > str(DT[, "x2"][1]) Classes ‘data.table’ and 'data.frame': 1 obs. of 1 variable: $ x2: num 32 - attr(*, ".internal.selfref")=<externalptr> > str(DT[, "x2"][[1]]) num [1:9] 32 32 32 32 32 32 32 32 32 ---- the tibble:: package (used in, e.g., the dplyr:: package) also (always?) returns a single column as a non-vector. again, a second indexing with double '[[]]' can produce a vector. ---- > DP <- tibble(DT) > is.vector(DP[, "x2"]) [1] FALSE > is.vector(DP[, "x2"][[1]]) [1] TRUE ---- but, note that a list of lists is also a vector: > is.vector(list(list(1), list(1,2,3))) [1] TRUE > str(list(list(1), list(1,2,3))) List of 2 $ :List of 1 ..$ : num 1 $ :List of 3 ..$ : num 1 ..$ : num 2 ..$ : num 3 etc. hth. good luck learning! cheers, Greg ______________________________________________ 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.