Hi experts,

I am trying to write a very flexible method that allows me to add a
new column to an existing data frame. This is what I have so far:

add.column <- function(df, new.col, name) {
        n.row <- dim(df)[1]
        length(new.col) <- n.row
        names(new.col) <- name
        return(cbind(df, new.col))
}

df <- NULL
df <- data.frame(a=c(1,2,3))
df
# corect: added NA to new collumn
df <- add.column(df,c(1,2),'myNewColumn2')
df
# problem: not added, data frame should be extended with NAs
add.column(df,c(1,2,3,4),'myNewColumn3')
df


However, there are two problems:

1) The column name is not renamed accurately but always set to
'new.col' . Surely this could be done outside the function, but it
would be better if its self contained.
2) It does not work for cases where new.col is longer than the length
of the data frame. In such cases, I would like to add NA's to the data
frame if it has less rows.

Any ideas to to solve this?

Ralf

______________________________________________
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