Mohammad Tanvir Ahamed
2016-Mar-03 02:05 UTC
[R] Extract row form a dataframe by row names in another vector and factor . Need explanation
Hi,Here i have written an example to explain my problem ## Data Generationdat<-data.frame(matrix(1:50,ncol=5)) rownames(dat)<-letters[1:10] colnames(dat)<- c("SA1","SA2","SA3","SA4","SA5") dat1<-data.frame(matrix(letters[1:20],ncol=4)) colnames(dat1)<-c("AA","BB","CC","DD") ## Row names v1<-dat1[,"BB"] ? ? ? ? ? ? ? ? ? # Factor v2<-as.vector(dat1[,"BB"]) ?# Vector is(v1) # Factor is(v2) # Vector # Result res1<-dat[v1,] res2<-dat[v2,] ##########################################################i assumed res1 and res2 are same .?but it is not .?Can any body please explain why ?? ? ? Tanvir Ahamed G?teborg, Sweden??| mashranga at yahoo.com [[alternative HTML version deleted]]
Jeff Newmiller
2016-Mar-03 06:36 UTC
[R] Extract row form a dataframe by row names in another vector and factor . Need explanation
Posting in HTML makes a mess of your code... learn to post in plain text. Not sure what you thought you would accomplish by using as.vector... perhaps you should read the help file ?as.vector. Did you look at str( dat1 )? Factors are more closely akin to integers than to characters. Indexing with factors is the same as indexing with the integers that factors are implemented with (see the discussion of factors in the Introduction to R document that comes with R) than indexing with character strings. If you want character indexing, use character vectors. Advice: 98% of the time making a data frame using a matrix causes more damage than help. Data frames are a list of columns, each of which potentially has its own storage mode. Matrices are all one type, implemented as a folded vector. Use named arguments to the data.frame function instead. Also use the stringsAsFactors = FALSE argument to data.frame unless you know you won't want character strings. -- Sent from my phone. Please excuse my brevity. On March 2, 2016 6:05:37 PM PST, Mohammad Tanvir Ahamed via R-help <r-help at r-project.org> wrote:>Hi,Here i have written an example to explain my problem >## Data Generationdat<-data.frame(matrix(1:50,ncol=5)) >rownames(dat)<-letters[1:10] >colnames(dat)<- c("SA1","SA2","SA3","SA4","SA5") > >dat1<-data.frame(matrix(letters[1:20],ncol=4)) >colnames(dat1)<-c("AA","BB","CC","DD") > >## Row names >v1<-dat1[,"BB"] ? ? ? ? ? ? ? ? ? # Factor >v2<-as.vector(dat1[,"BB"]) ?# Vector > >is(v1) # Factor >is(v2) # Vector > ># Result >res1<-dat[v1,] >res2<-dat[v2,] >##########################################################i assumed >res1 and res2 are same .?but it is not .?Can any body please explain >why ?? >? >? >Tanvir Ahamed >G?teborg, Sweden??| mashranga at yahoo.com > [[alternative HTML version deleted]] > >______________________________________________ >R-help at 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.[[alternative HTML version deleted]]