On Thu, Nov 14, 2013 at 12:06 PM, Pooya Lalehzari <plalehz...@platinumlp.com> wrote: > Hello, > I noticed an unexpected behavior when using the xts object and I was > wondering if anyone knows why that happens. I have a code to create a new > column and copy one of the columns to the new column (please see below): > > library(xts) > df = data.frame(stringsAsFactors=FALSE) > df[1:3,"date"] = c("2001-1-1","2001-1-2","2001-1-3") > df[1:3,"col1"] = c(1:3) > df[1:3,"col2"] = c(-1:-3) > df[1:3,"col3"] = c(101:103) > rownames(df)= df$date > df2 = as.xts(df) > View(df2) > Col_To_Copy = "col1" > df2$NewCol = df2[,colnames(df2)==Col_To_Copy] > View(df2) > > This code works, expect, I noticed that when the Col_To_Copy is not found, > the last column is renamed to "NewCol". For example: > library(xts) > df = data.frame(stringsAsFactors=FALSE) > df[1:3,"date"] = c("2001-1-1","2001-1-2","2001-1-3") > df[1:3,"col1"] = c(1:3) > df[1:3,"col2"] = c(-1:-3) > df[1:3,"col3"] = c(101:103) > rownames(df)= df$date > df2 = as.xts(df) > View(df2) > Col_To_Copy = "col5" # the only line changed > df2$NewCol = df2[,colnames(df2)==Col_To_Copy] > View(df2) > > In this case, the last column's name is changed to "NewCol". Is that behavior > expected for xts objects? > xts doesn't have a $<- method, so $<-.zoo is dispatched. I'm not familiar with the function, but the behavior you found is explicitly defined, so that seems to suggest it was intended.
>From "$<-.zoo": wi <- match(x, colnames(object)) if(is.na(wi)) { object <- cbind(object, value) if(is.null(dim(object))) dim(object) <- c(length(object), 1) colnames(object)[NCOL(object)] <- x } else { ... Best, -- Joshua Ulrich | about.me/joshuaulrich FOSS Trading | www.fosstrading.com ______________________________________________ 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.