Hi, I am really puzzled by this. hope someone can help me I have a 2 small data frames "a" and "b" derived from a larger data frames. They look exactly the same to me, but identical() always returns FALSE.> aa b 2 10011048 L 4 10011048 R 6 10011049 L 8 10011049 R> ba b 1 10011048 L 3 10011048 R 5 10011049 L 7 10011049 R> identical(a,b)[1] FALSE some information about the attributes of the 2 data frames:> class(a)[1] "data.frame"> class(b)[1] "data.frame"> class(a$a)[1] "integer"> class(a$b)[1] "character"> class(b$a)[1] "integer"> class(b$b)[1] "character" However, if I generate these 2 data frame from scratches, identical() would returns TRUE>x<-as.data.frame(cbind(a=c(10011048,10011048,10011049,10011049),b=c('L','R','L','R'))) >) >y<-as.data.frame(cbind(a=c(10011048,10011048,10011049,10011049),b=c('L','R','L','R'))) >)> identical(x,y)[1] TRUE Looks like a & b objects takes some invisible residual information from the larger data frame where they were derived, which is not the same between them. But what is it? Thanks John
Hello, array chip wrote:> Hi, I am really puzzled by this. hope someone can help me > > I have a 2 small data frames "a" and "b" derived from a larger data frames. They > look exactly the same to me, but identical() always returns FALSE. > >> a > a b > 2 10011048 L > 4 10011048 R > 6 10011049 L > 8 10011049 R >> b > a b > 1 10011048 L > 3 10011048 R > 5 10011049 L > 7 10011049 R > >> identical(a,b) > [1] FALSEDo these really look "exactly the same" to you? The first column (the row.names) are clearly different, thus they are not identical. See ?row.names> > some information about the attributes of the 2 data frames: > >> class(a) > [1] "data.frame" >> class(b) > [1] "data.frame" >> class(a$a) > [1] "integer" >> class(a$b) > [1] "character" >> class(b$a) > [1] "integer" >> class(b$b) > [1] "character" > > > However, if I generate these 2 data frame from scratches, identical() would > returns TRUE > >> x<-as.data.frame(cbind(a=c(10011048,10011048,10011049,10011049),b=c('L','R','L','R'))) >> ) >> y<-as.data.frame(cbind(a=c(10011048,10011048,10011049,10011049),b=c('L','R','L','R'))) >> ) > >> identical(x,y) > [1] TRUE > > Looks like a & b objects takes some invisible residual information from the > larger data frame where they were derived, which is not the same between them. > But what is it? > > Thanks > > John > > ______________________________________________ > 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.
On Mon, Aug 16, 2010 at 5:47 PM, array chip <arrayprofile at yahoo.com> wrote:> Hi, I am really puzzled by this. hope someone can help me > > I have a 2 small data frames "a" and "b" derived from a larger data frames. They > look exactly the same to me, but identical() always returns FALSE. > >> a > ? ? ? ? a b > 2 10011048 L > 4 10011048 R > 6 10011049 L > 8 10011049 R >> b > ? ? ? ? a b > 1 10011048 L > 3 10011048 R > 5 10011049 L > 7 10011049 R > >> identical(a,b) > [1] FALSE > > some information about the attributes of the 2 data frames: > >> class(a) > [1] "data.frame" >> class(b) > [1] "data.frame" >> class(a$a) > [1] "integer" >> class(a$b) > [1] "character" >> class(b$a) > [1] "integer" >> class(b$b) > [1] "character" > > > However, if I generate these 2 data frame from scratches, identical() would > returns TRUE > >>x<-as.data.frame(cbind(a=c(10011048,10011048,10011049,10011049),b=c('L','R','L','R'))) >>) >>y<-as.data.frame(cbind(a=c(10011048,10011048,10011049,10011049),b=c('L','R','L','R'))) >>) > >> identical(x,y) > [1] TRUE > > Looks like a & b objects takes some invisible residual information from the > larger data frame where they were derived, which is not the same between them. > But what is it? >Try dput(a) and dput(b) and carefully compare the two outputs.
Hi John, They are different as Erik said.> identical(a,b)[1] FALSE> row.names(a)[1] "2" "4" "6" "8"> row.names(b)[1] "1" "3" "5" "7"> row.names(a) <- NULL > row.names(b) <- NULL > identical(a,b)[1] TRUE Regards, Wu array chip wrote:> >> a > a b > 2 10011048 L > 4 10011048 R > 6 10011049 L > 8 10011049 R >> b > a b > 1 10011048 L > 3 10011048 R > 5 10011049 L > 7 10011049 R > >> identical(a,b) > [1] FALSE >----- A R learner. -- View this message in context: http://r.789695.n4.nabble.com/identical-tp2327537p2327553.html Sent from the R help mailing list archive at Nabble.com.
Hi, Take a look at this:> identical(a,b)[1] FALSE> all.equal(a,b)[1] "Attributes: < Component 2: 4 string mismatches >"> rownames(a) <- rownames(b) <- NULL > identical(a,b)[1] TRUE> all.equal(a,b)[1] TRUE HTH, Jorge On Mon, Aug 16, 2010 at 5:47 PM, array chip <> wrote:> Hi, I am really puzzled by this. hope someone can help me > > I have a 2 small data frames "a" and "b" derived from a larger data frames. > They > look exactly the same to me, but identical() always returns FALSE. > > > a > a b > 2 10011048 L > 4 10011048 R > 6 10011049 L > 8 10011049 R > > b > a b > 1 10011048 L > 3 10011048 R > 5 10011049 L > 7 10011049 R > > > identical(a,b) > [1] FALSE > > some information about the attributes of the 2 data frames: > > > class(a) > [1] "data.frame" > > class(b) > [1] "data.frame" > > class(a$a) > [1] "integer" > > class(a$b) > [1] "character" > > class(b$a) > [1] "integer" > > class(b$b) > [1] "character" > > > However, if I generate these 2 data frame from scratches, identical() would > returns TRUE > > > >x<-as.data.frame(cbind(a=c(10011048,10011048,10011049,10011049),b=c('L','R','L','R'))) > >) > > >y<-as.data.frame(cbind(a=c(10011048,10011048,10011049,10011049),b=c('L','R','L','R'))) > >) > > > identical(x,y) > [1] TRUE > > Looks like a & b objects takes some invisible residual information from the > larger data frame where they were derived, which is not the same between > them. > But what is it? > > Thanks > > John > > ______________________________________________ > 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. >[[alternative HTML version deleted]]