Re: [R] avoid losing data.frame attributes on cbind()
Dear Arun, On Tue, Apr 16, 2013 at 10:45 PM, arun smartpink...@yahoo.com wrote: Another method would be: Xc- Xa Xc$var1-NA; Xc$var2- NA Xc[]- append(as.list(Xa),as.list(Xb)) Unfortunately this is still too convoluted and error prone. And mutate() doesn't work for me, as I generate the new vars elsewhere. So is there no other clean way to append several new variables to a data frame, without losing its attributes? Regards, Liviu str(Xc) #'data.frame':150 obs. of 7 variables: # $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... # $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... # $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... # $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... # $ var1: num 5 5 5 5 5 5 5 5 4 5 ... # $ var2: num 4 3 3 3 4 4 3 3 3 3 ... # - attr(*, label)= chr Some df label A.K. - Original Message - From: arun smartpink...@yahoo.com To: Liviu Andronic landronim...@gmail.com Cc: R help r-help@r-project.org Sent: Tuesday, April 16, 2013 2:40 PM Subject: Re: [R] avoid losing data.frame attributes on cbind() HI, Not sure if this helps: library(plyr) res-mutate(Xa,var1=round(Sepal.Length),var2=round(Sepal.Width)) str(res) #'data.frame':150 obs. of 7 variables: # $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... # $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... # $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... # $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... # $ var1: num 5 5 5 5 5 5 5 5 4 5 ... # $ var2: num 4 3 3 3 4 4 3 3 3 3 ... #- attr(*, label)= chr Some df label A.K. - Original Message - From: Liviu Andronic landronim...@gmail.com To: r-help r-h...@stat.math.ethz.ch Cc: Sent: Tuesday, April 16, 2013 2:24 PM Subject: [R] avoid losing data.frame attributes on cbind() Dear all, How should I add several variables to a data frame without losing the attributes of the df? Consider the following: require(Hmisc) Xa - iris label(Xa, self=T) - Some df label str(Xa) 'data.frame':150 obs. of 5 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... - attr(*, label)= chr Some df label Xb - round(iris[,1:2]) names(Xb) - c(var1,'var2') Xc - cbind(Xa, Xb) #the attribute is now gone str(Xc) 'data.frame':150 obs. of 7 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... $ var1: num 5 5 5 5 5 5 5 5 4 5 ... $ var2: num 4 3 3 3 4 4 3 3 3 3 ... In such cases, when I want to plug some variables from 2nd df into the 1st df, how should I proceed without losing the attributes of the 1st data frame. And, if possible, I'm looking for something nicer than: for(i in names(Xb)) Xa[ , i] - Xb[ , i] Regards, Liviu __ 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. -- Do you know how to read? http://www.alienetworks.com/srtest.cfm http://goodies.xfce.org/projects/applications/xfce4-dict#speed-reader Do you know how to write? http://garbl.home.comcast.net/~garbl/stylemanual/e.htm#e-mail __ 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.
Re: [R] avoid losing data.frame attributes on cbind()
Dear Liviu, May be you can use the method mentioned in the link: http://stackoverflow.com/questions/10404224/how-to-delete-a-row-from-a-data-frame-without-losing-the-attributes str(Xa) #'data.frame': 150 obs. of 5 variables: # $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... # $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... # $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... # $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... # - attr(*, label)= chr Some df label Xc- cbind(Xa,Xb) as.data.frame.avector -as.data.frame.vector `[.avector` - function(x,i,...) { r - NextMethod([) mostattributes(r) - attributes(x) r } mostattributes(Xc)- attributes(Xa) str(Xc) #'data.frame': 150 obs. of 7 variables: # $ : num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... # $ : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... # $ : num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... # $ : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... # $ : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... # $ : num 5 5 5 5 5 5 5 5 4 5 ... # $ : num 4 3 3 3 4 4 3 3 3 3 ... # - attr(*, label)= chr Some df label A.K. - Original Message - From: Liviu Andronic landronim...@gmail.com To: arun smartpink...@yahoo.com Cc: R help r-help@r-project.org Sent: Friday, April 19, 2013 8:13 AM Subject: Re: [R] avoid losing data.frame attributes on cbind() Dear Arun, On Tue, Apr 16, 2013 at 10:45 PM, arun smartpink...@yahoo.com wrote: Another method would be: Xc- Xa Xc$var1-NA; Xc$var2- NA Xc[]- append(as.list(Xa),as.list(Xb)) Unfortunately this is still too convoluted and error prone. And mutate() doesn't work for me, as I generate the new vars elsewhere. So is there no other clean way to append several new variables to a data frame, without losing its attributes? Regards, Liviu str(Xc) #'data.frame': 150 obs. of 7 variables: # $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... # $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... # $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... # $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... # $ var1 : num 5 5 5 5 5 5 5 5 4 5 ... # $ var2 : num 4 3 3 3 4 4 3 3 3 3 ... # - attr(*, label)= chr Some df label A.K. - Original Message - From: arun smartpink...@yahoo.com To: Liviu Andronic landronim...@gmail.com Cc: R help r-help@r-project.org Sent: Tuesday, April 16, 2013 2:40 PM Subject: Re: [R] avoid losing data.frame attributes on cbind() HI, Not sure if this helps: library(plyr) res-mutate(Xa,var1=round(Sepal.Length),var2=round(Sepal.Width)) str(res) #'data.frame': 150 obs. of 7 variables: # $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... # $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... # $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... # $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... # $ var1 : num 5 5 5 5 5 5 5 5 4 5 ... # $ var2 : num 4 3 3 3 4 4 3 3 3 3 ... #- attr(*, label)= chr Some df label A.K. - Original Message - From: Liviu Andronic landronim...@gmail.com To: r-help r-h...@stat.math.ethz.ch Cc: Sent: Tuesday, April 16, 2013 2:24 PM Subject: [R] avoid losing data.frame attributes on cbind() Dear all, How should I add several variables to a data frame without losing the attributes of the df? Consider the following: require(Hmisc) Xa - iris label(Xa, self=T) - Some df label str(Xa) 'data.frame': 150 obs. of 5 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... - attr(*, label)= chr Some df label Xb - round(iris[,1:2]) names(Xb) - c(var1,'var2') Xc - cbind(Xa, Xb) #the attribute is now gone str(Xc) 'data.frame': 150 obs. of 7 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... $ var1 : num 5 5 5 5 5 5 5 5 4 5 ... $ var2 : num 4 3 3 3 4 4 3 3 3 3 ... In such cases, when I want to plug some variables from 2nd df into the 1st df, how should I proceed without losing the attributes of the 1st data frame
Re: [R] avoid losing data.frame attributes on cbind()
Dear Arun, On Fri, Apr 19, 2013 at 6:30 PM, arun smartpink...@yahoo.com wrote: Dear Liviu, May be you can use the method mentioned in the link: http://stackoverflow.com/questions/10404224/how-to-delete-a-row-from-a-data-frame-without-losing-the-attributes This approach is still much too complicated (and as you mentioned off-list, it also removes variable names). For now I've settled with the following function: append.data.frame - function(x, values){ stopifnot(is.data.frame(x)) stopifnot(is.data.frame(values)) for(i in names(values)) x[ , i] - values[ , i] return(x) } Xa - iris label(Xa, self=T) - Some df label attributes(Xa)$label [1] Some df label Xb - round(iris[,1:2]) names(Xb) - c(var1,'var2') Xc - append.data.frame(Xa, Xb) attributes(Xc)$label [1] Some df label This won't work if there is only one variable to be added (i.e. a vector). For now this function works, but I would really rather find a nicer solution to this. Thanks, Liviu str(Xa) #'data.frame':150 obs. of 5 variables: # $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... # $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... # $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... # $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... # - attr(*, label)= chr Some df label Xc- cbind(Xa,Xb) as.data.frame.avector -as.data.frame.vector `[.avector` - function(x,i,...) { r - NextMethod([) mostattributes(r) - attributes(x) r } mostattributes(Xc)- attributes(Xa) str(Xc) #'data.frame':150 obs. of 7 variables: # $ : num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... # $ : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... # $ : num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... # $ : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... # $ : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... # $ : num 5 5 5 5 5 5 5 5 4 5 ... # $ : num 4 3 3 3 4 4 3 3 3 3 ... # - attr(*, label)= chr Some df label A.K. - Original Message - From: Liviu Andronic landronim...@gmail.com To: arun smartpink...@yahoo.com Cc: R help r-help@r-project.org Sent: Friday, April 19, 2013 8:13 AM Subject: Re: [R] avoid losing data.frame attributes on cbind() Dear Arun, On Tue, Apr 16, 2013 at 10:45 PM, arun smartpink...@yahoo.com wrote: Another method would be: Xc- Xa Xc$var1-NA; Xc$var2- NA Xc[]- append(as.list(Xa),as.list(Xb)) Unfortunately this is still too convoluted and error prone. And mutate() doesn't work for me, as I generate the new vars elsewhere. So is there no other clean way to append several new variables to a data frame, without losing its attributes? Regards, Liviu str(Xc) #'data.frame':150 obs. of 7 variables: # $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... # $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... # $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... # $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... # $ var1: num 5 5 5 5 5 5 5 5 4 5 ... # $ var2: num 4 3 3 3 4 4 3 3 3 3 ... # - attr(*, label)= chr Some df label A.K. - Original Message - From: arun smartpink...@yahoo.com To: Liviu Andronic landronim...@gmail.com Cc: R help r-help@r-project.org Sent: Tuesday, April 16, 2013 2:40 PM Subject: Re: [R] avoid losing data.frame attributes on cbind() HI, Not sure if this helps: library(plyr) res-mutate(Xa,var1=round(Sepal.Length),var2=round(Sepal.Width)) str(res) #'data.frame':150 obs. of 7 variables: # $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... # $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... # $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... # $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... # $ var1: num 5 5 5 5 5 5 5 5 4 5 ... # $ var2: num 4 3 3 3 4 4 3 3 3 3 ... #- attr(*, label)= chr Some df label A.K. - Original Message - From: Liviu Andronic landronim...@gmail.com To: r-help r-h...@stat.math.ethz.ch Cc: Sent: Tuesday, April 16, 2013 2:24 PM Subject: [R] avoid losing data.frame attributes on cbind() Dear all, How should I add several variables to a data frame without losing the attributes of the df? Consider the following: require(Hmisc) Xa - iris label(Xa, self=T) - Some df label str(Xa) 'data.frame':150 obs. of 5 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... $ Species
[R] avoid losing data.frame attributes on cbind()
Dear all, How should I add several variables to a data frame without losing the attributes of the df? Consider the following: require(Hmisc) Xa - iris label(Xa, self=T) - Some df label str(Xa) 'data.frame': 150 obs. of 5 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... - attr(*, label)= chr Some df label Xb - round(iris[,1:2]) names(Xb) - c(var1,'var2') Xc - cbind(Xa, Xb) #the attribute is now gone str(Xc) 'data.frame': 150 obs. of 7 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... $ var1: num 5 5 5 5 5 5 5 5 4 5 ... $ var2: num 4 3 3 3 4 4 3 3 3 3 ... In such cases, when I want to plug some variables from 2nd df into the 1st df, how should I proceed without losing the attributes of the 1st data frame. And, if possible, I'm looking for something nicer than: for(i in names(Xb)) Xa[ , i] - Xb[ , i] Regards, Liviu __ 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.
Re: [R] avoid losing data.frame attributes on cbind()
HI, Not sure if this helps: library(plyr) res-mutate(Xa,var1=round(Sepal.Length),var2=round(Sepal.Width)) str(res) #'data.frame': 150 obs. of 7 variables: # $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... # $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... # $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... # $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... # $ var1 : num 5 5 5 5 5 5 5 5 4 5 ... # $ var2 : num 4 3 3 3 4 4 3 3 3 3 ... #- attr(*, label)= chr Some df label A.K. - Original Message - From: Liviu Andronic landronim...@gmail.com To: r-help r-h...@stat.math.ethz.ch Cc: Sent: Tuesday, April 16, 2013 2:24 PM Subject: [R] avoid losing data.frame attributes on cbind() Dear all, How should I add several variables to a data frame without losing the attributes of the df? Consider the following: require(Hmisc) Xa - iris label(Xa, self=T) - Some df label str(Xa) 'data.frame': 150 obs. of 5 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... - attr(*, label)= chr Some df label Xb - round(iris[,1:2]) names(Xb) - c(var1,'var2') Xc - cbind(Xa, Xb) #the attribute is now gone str(Xc) 'data.frame': 150 obs. of 7 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... $ var1 : num 5 5 5 5 5 5 5 5 4 5 ... $ var2 : num 4 3 3 3 4 4 3 3 3 3 ... In such cases, when I want to plug some variables from 2nd df into the 1st df, how should I proceed without losing the attributes of the 1st data frame. And, if possible, I'm looking for something nicer than: for(i in names(Xb)) Xa[ , i] - Xb[ , i] Regards, Liviu __ 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. __ 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.
Re: [R] avoid losing data.frame attributes on cbind()
Hi, Another method would be: Xc- Xa Xc$var1-NA; Xc$var2- NA Xc[]- append(as.list(Xa),as.list(Xb)) str(Xc) #'data.frame': 150 obs. of 7 variables: # $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... # $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... # $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... # $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... # $ var1 : num 5 5 5 5 5 5 5 5 4 5 ... # $ var2 : num 4 3 3 3 4 4 3 3 3 3 ... # - attr(*, label)= chr Some df label A.K. - Original Message - From: arun smartpink...@yahoo.com To: Liviu Andronic landronim...@gmail.com Cc: R help r-help@r-project.org Sent: Tuesday, April 16, 2013 2:40 PM Subject: Re: [R] avoid losing data.frame attributes on cbind() HI, Not sure if this helps: library(plyr) res-mutate(Xa,var1=round(Sepal.Length),var2=round(Sepal.Width)) str(res) #'data.frame': 150 obs. of 7 variables: # $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... # $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... # $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... # $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... # $ var1 : num 5 5 5 5 5 5 5 5 4 5 ... # $ var2 : num 4 3 3 3 4 4 3 3 3 3 ... #- attr(*, label)= chr Some df label A.K. - Original Message - From: Liviu Andronic landronim...@gmail.com To: r-help r-h...@stat.math.ethz.ch Cc: Sent: Tuesday, April 16, 2013 2:24 PM Subject: [R] avoid losing data.frame attributes on cbind() Dear all, How should I add several variables to a data frame without losing the attributes of the df? Consider the following: require(Hmisc) Xa - iris label(Xa, self=T) - Some df label str(Xa) 'data.frame': 150 obs. of 5 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... - attr(*, label)= chr Some df label Xb - round(iris[,1:2]) names(Xb) - c(var1,'var2') Xc - cbind(Xa, Xb) #the attribute is now gone str(Xc) 'data.frame': 150 obs. of 7 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... $ var1 : num 5 5 5 5 5 5 5 5 4 5 ... $ var2 : num 4 3 3 3 4 4 3 3 3 3 ... In such cases, when I want to plug some variables from 2nd df into the 1st df, how should I proceed without losing the attributes of the 1st data frame. And, if possible, I'm looking for something nicer than: for(i in names(Xb)) Xa[ , i] - Xb[ , i] Regards, Liviu __ 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. __ 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.
Re: [R] avoid losing data.frame attributes on cbind()
Just to add: Xc[]- append(Xa,Xb) #should also work str(Xc) #'data.frame': 150 obs. of 7 variables: # $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... # $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... # $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... # $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... # $ var1 : num 5 5 5 5 5 5 5 5 4 5 ... # $ var2 : num 4 3 3 3 4 4 3 3 3 3 ... # - attr(*, label)= chr Some df label A.K. - Original Message - From: arun smartpink...@yahoo.com To: Liviu Andronic landronim...@gmail.com Cc: R help r-help@r-project.org Sent: Tuesday, April 16, 2013 4:45 PM Subject: Re: [R] avoid losing data.frame attributes on cbind() Hi, Another method would be: Xc- Xa Xc$var1-NA; Xc$var2- NA Xc[]- append(as.list(Xa),as.list(Xb)) str(Xc) #'data.frame': 150 obs. of 7 variables: # $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... # $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... # $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... # $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... # $ var1 : num 5 5 5 5 5 5 5 5 4 5 ... # $ var2 : num 4 3 3 3 4 4 3 3 3 3 ... # - attr(*, label)= chr Some df label A.K. - Original Message - From: arun smartpink...@yahoo.com To: Liviu Andronic landronim...@gmail.com Cc: R help r-help@r-project.org Sent: Tuesday, April 16, 2013 2:40 PM Subject: Re: [R] avoid losing data.frame attributes on cbind() HI, Not sure if this helps: library(plyr) res-mutate(Xa,var1=round(Sepal.Length),var2=round(Sepal.Width)) str(res) #'data.frame': 150 obs. of 7 variables: # $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... # $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... # $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... # $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... # $ var1 : num 5 5 5 5 5 5 5 5 4 5 ... # $ var2 : num 4 3 3 3 4 4 3 3 3 3 ... #- attr(*, label)= chr Some df label A.K. - Original Message - From: Liviu Andronic landronim...@gmail.com To: r-help r-h...@stat.math.ethz.ch Cc: Sent: Tuesday, April 16, 2013 2:24 PM Subject: [R] avoid losing data.frame attributes on cbind() Dear all, How should I add several variables to a data frame without losing the attributes of the df? Consider the following: require(Hmisc) Xa - iris label(Xa, self=T) - Some df label str(Xa) 'data.frame': 150 obs. of 5 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... - attr(*, label)= chr Some df label Xb - round(iris[,1:2]) names(Xb) - c(var1,'var2') Xc - cbind(Xa, Xb) #the attribute is now gone str(Xc) 'data.frame': 150 obs. of 7 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... $ Species : Factor w/ 3 levels setosa,versicolor,..: 1 1 1 1 1 1 1 1 1 1 ... $ var1 : num 5 5 5 5 5 5 5 5 4 5 ... $ var2 : num 4 3 3 3 4 4 3 3 3 3 ... In such cases, when I want to plug some variables from 2nd df into the 1st df, how should I proceed without losing the attributes of the 1st data frame. And, if possible, I'm looking for something nicer than: for(i in names(Xb)) Xa[ , i] - Xb[ , i] Regards, Liviu __ 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. __ 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.