> > dataset[ nrow(dataset), ] <- c ("Male", 5, "bad") > > The above seems to have worked to append a row in place of a rbind(). This
No. It overwrites your last row. You maybe meant dataset[ nrow(dataset)+1, ] <- c ("Male", 5, "bad") Regards Petr > method does not drop the custom attributes from the column. Do yo see any > issue with this method. > > Thanks, > Sammy > > On Sat, Nov 12, 2011 at 10:16 PM, David Winsemius <dwinsem...@comcast.net>wrote: > > > > > On Nov 12, 2011, at 6:40 PM, Sammy Zee wrote: > > > > Thanks David. Besides rbind(), is there any other way to add a row to a > >> data frame so that I do not lose the custom attributes. > >> > > > > I have already told you the method that I know of. You don't seem to have > > taken my poin that it is not a data.frame specific problem but rahter a > > facor problem. You are welcome to redefine `rbind.data.frame`. The R > > language is rather flexible in that manner. > > > > -- > > David. > > > > > >> Thanks, > >> Sammy > >> > >> On Sat, Nov 12, 2011 at 5:17 PM, David Winsemius <dwinsem...@comcast.net> > >> wrote: > >> > >> On Nov 12, 2011, at 2:47 PM, Sammy Zee wrote: > >> > >> 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")) > >> > >> If you look through the code of rbind.data.frame you see that column > >> values are processed with the 'factor' function. > >> > >> > >> > attributes(dataset$answer) > >> $levels > >> [1] "bad" "good" "great" > >> > >> $class > >> [1] "factor" > >> > >> $newattr1 > >> [1] "custom-attr1" > >> > >> $newattr2 > >> [1] "custom-attr2" > >> > >> > attributes(factor(dataset$**answer)) > >> > >> $levels > >> [1] "bad" "good" "great" > >> > >> $class > >> [1] "factor" > >> > >> > >> So I think you are out of luck. You will need to restore the "special > >> attributes" yourself. > >> > >> -- > >> David. > >> > >> > >> 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... > >> > >> 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<http://r. > 789695.n4.nabble.com/rbind-data-frame-drops-attributes-for-factor- > variables-td919575.html> > >> > >> Thanks, > >> Sammy > >> > >> [[alternative HTML version deleted]] > >> > >> ___ > >> > >> > > David Winsemius, MD > > West Hartford, CT > > > > > > [[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. ______________________________________________ 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.