khobson@fd9ns01.okladot.state.ok.us
2005-May-31 16:32 UTC
[R] Add Columns and Order for Rbind?
I am using rbind to add one list with one row to another master list. The problem is that not all columns exist in both lists. What methods would you recommend to reorder one list based on the column names of another? If both sets have the same order and columns, I can then use rbind. I can live with columns being added to the master list set it makes the task easier using something like union for column name matching and order. mailto:khobson at odot.org Kenneth Ray Hobson, P.E. Oklahoma DOT - QA & IAS Manager 200 N.E. 21st Street Oklahoma City, OK 73105-3204 (405) 522-4985, (405) 522-0552 fax Visit our website at: http://www.okladot.state.ok.us/materials/materials.htm
On 5/31/05, khobson at fd9ns01.okladot.state.ok.us <khobson at fd9ns01.okladot.state.ok.us> wrote:> > > > > I am using rbind to add one list with one row to another master list. The > problem is that not all columns exist in both lists. > > What methods would you recommend to reorder one list based on the column > names of another? If both sets have the same order and columns, I can > then use rbind. I can live with columns being added to the master list set > it makes the task easier using something like union for column name > matching and order. >Suppose we have this test data: # test data irish <- head(iris) one.row <- data.frame(Sepal.Length = 5, Sepal.Area = 10) # Then we rbind an NA row to irish and fill it with one.row irish <- rbind(irish, NA) irish[nrow(irish),names(one.row)] <- one.row # If you don't want columns added to the master list do this instead: irish <- head(iris) # recreate test data irish <- rbind(irish, NA) both <- intersect(names(irish), names(one.row)) irish[nrow(irish), both] <- one.row[,both] Note that appending rows one at a time can be slow.