When I use rbind() or rbind.data.frame() to add a row to an existing
dataframe, it appears that attributes for the column of type "factor" are
dropped. See the sample example below to reproduce the problem. Please
suggest How I can fix this.

Thanks,
Sammy

a=c("Male", "Male", "Female", "Male")
b=c(1,2,3,4)
c=c("great", "bad", "good", "bad")
dataset<- data.frame (gender = a, count = b, answer = c)

> dataset

 gender count answer
1   Male     1  great
2   Male     2    bad
3 Female     3   good
4   Male     4    bad


> attributes(dataset$answer)
$levels
[1] "bad"   "good"  "great"

$class
[1] "factor"

Now adding some custom attributes to column dataset$answer

attributes(dataset$answer)<-c(attributes(dataset$answer),list(newattr1="custom-attr1"))
attributes(dataset$answer)<-c(attributes(dataset$answer),list(newattr2="custom-attr2"))

> attributes(dataset$answer)
$levels
[1] "bad"   "good"  "great"

$class
[1] "factor"

$newattr1
[1] "custom-attr1"

$newattr2
[1] "custom-attr2"

However as soon as I add a row to this data frame ("dataset") by rbind(),
it loses the custom
attributes ("newattr1" and "newattr2") I have just added

newrow = c(gender="Female", count = 5, answer = "great")

dataset <- rbind(dataset, newrow)

> attributes(dataset$answer)
$levels
[1] "bad"   "good"  "great"

$class
[1] "factor"

the two custom attributes are dropped!! Any suggestion why this is
happening.

On Fri, Nov 11, 2011 at 11:44 AM, Jeff Newmiller
<jdnew...@dcn.davis.ca.us>wrote:

> As the doctor says, if it hurts "don't do that".
>
> A factor is a sequence of integers with a corresponding list of character
> strings. Factors in two separate vectors can and usually do map the same
> integer to different strings, and R cannot tell how you want that resolved.
>
> Convert these columns to character before combining them, and only convert
> to factor when you have all of your possibilities present (or you specify
> them in the creation of the factor vector).
> ---------------------------------------------------------------------------
> Jeff Newmiller                        The     .....       .....  Go Live...
> DCN:<jdnew...@dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live
> Go...
>                                      Live:   OO#.. Dead: OO#..  Playing
> Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
> /Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
> ---------------------------------------------------------------------------
> Sent from my phone. Please excuse my brevity.
>
> Sammy Zee <szee2...@gmail.com> wrote:
>
> >Hi all,
> >
> >When I use rbind() or rbind.data.frame() to add a row to an existing
> >dataframe, it appears that attributes for the column of type "factor"
> >are
> >dropped. I see the following post with same problem. However i did not
> >see
> >any reply to the following posting offering a solution. Could someone
> >please help.
> >
> >
> http://r.789695.n4.nabble.com/rbind-data-frame-drops-attributes-for-factor-variables-td919575.html
> >
> >Thanks,
> >Sammy
> >
> >       [[alternative HTML version deleted]]
> >
> >______________________________________________
> >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]]

______________________________________________
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.

Reply via email to