-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
project.org] On Behalf Of arun
Sent: Sunday, July 01, 2012 12:56 PM
To: R help
Subject: [R] list to dataframe conversion-testing for identical
HI R help,
I was trying to get identical data frame from a list using two methods.
#Suppose my list is:
listdat1<-list(rnorm(10,20),rep(LETTERS[1:2],5),rep(1:5,2))
#Creating dataframe using cbind
dat1<-data.frame(do.call("cbind",listdat1))
colnames(dat1)<-c("Var1","Var2","Var3")
#Second dataframe conversion
dat2<-
data.frame(Var1=listdat1[[1]],Var2=listdat1[[2]],Var3=listdat1[[3]])
#Structure is different in two datasets
?>str(dat1)
'data.frame':??? 10 obs. of? 3 variables:
?$ Var1: Factor w/ 10 levels "18.6153321029756",..: 5 2 6 8 7 9 1 4 3
10
?$ Var2: Factor w/ 2 levels "A","B": 1 2 1 2 1 2 1 2 1 2
?$ Var3: Factor w/ 5 levels "1","2","3","4",..: 1 2 3 4 5 1 2 3 4 5
'data.frame':??? 10 obs. of? 3 variables:
?$ Var1: num? 20.3 19.2 20.5 20.9 20.5 ...
?$ Var2: Factor w/ 2 levels "A","B": 1 2 1 2 1 2 1 2 1 2
?$ Var3: int? 1 2 3 4 5 1 2 3 4 5
#Converting structure of dat1 to match da2 structure
dat1<-within(dat1,{Var1<-as.numeric(as.character(Var1))
??? Var3<-as.integer(Var3)})
head(dat1)
????? Var1 Var2 Var3
1 20.27193??? A??? 1
2 19.17586??? B??? 2
3 20.53197??? A??? 3
4 20.93615??? B??? 4
5 20.53498??? A??? 5
6 21.02044??? B??? 1
????? Var1 Var2 Var3
1 20.27193??? A??? 1
2 19.17586??? B??? 2
3 20.53197??? A??? 3
4 20.93615??? B??? 4
5 20.53498??? A??? 5
6 21.02044??? B??? 1
#New structure?identical(str(dat1),str(dat2))
'data.frame':??? 10 obs. of? 3 variables:
?$ Var1: num? 19.9 19 21.2 20.7 20.4 ...
?$ Var2: Factor w/ 2 levels "A","B": 1 2 1 2 1 2 1 2 1 2
?$ Var3: int? 1 2 3 4 5 1 2 3 4 5
'data.frame':??? 10 obs. of? 3 variables:
?$ Var1: num? 19.9 19 21.2 20.7 20.4 ...
?$ Var2: Factor w/ 2 levels "A","B": 1 2 1 2 1 2 1 2 1 2
?$ Var3: int? 1 2 3 4 5 1 2 3 4 5
[1] TRUE
#structure is identical and dataframe looks to be same, but it is not
identical.
[1] FALSE
Is it something to do with the floating point?
Thanks,
A.K.