On Mar 16, 2011, at 7:58 PM, jctoll wrote:
Hi,

I'm struggling to figure out the way to change the name of a column
from within a loop.  The problem is I can't refer to the object by its
actual variable name, since that will change each time through the
loop.  My xts object is A.

head(A)
          A.Open A.High A.Low A.Close A.Volume A.Adjusted A.Adjusted.1
2007-01-03 34.99 35.48 34.05 34.30 2574600 34.30 11867800000 2007-01-04 34.30 34.60 33.46 34.41 2073700 34.41 11905860000 2007-01-05 34.30 34.40 34.00 34.09 2676600 34.09 11795140000 2007-01-08 33.98 34.08 33.68 33.97 1557200 33.97 11753620000 2007-01-09 34.08 34.32 33.63 34.01 1386200 34.01 11767460000 2007-01-10 34.04 34.04 33.37 33.70 2157400 33.70 11660200000
It's column names are:
colnames(A)
[1] "A.Open"       "A.High"       "A.Low"        "A.Close"
"A.Volume"     "A.Adjusted"   "A.Adjusted.1"

I want to change the 7th column name:
colnames(A)[7]
[1] "A.Adjusted.1"

I need to do that through a reference to i:
i
[1] "A"

It's not pretty and there may be a more direct way:
> a
      [,1] [,2]
[1,] 1e+20 1000
[2,] 1e+02 1000
> b <- "a"
> assign("tmp", eval(parse(text=b)))
> tmp
      [,1] [,2]
[1,] 1e+20 1000
[2,] 1e+02 1000
> colnames(tmp) <- c("one","two")
> assign( b, tmp)
> a
       one  two
[1,] 1e+20 1000
[2,] 1e+02 1000


Trying to short circuit the process without an intermediate temporary structure fails:
> colnames(eval(parse(text=b)) )<- c("two", "three")
Error in parse(`*tmp*`) : EOF whilst reading MBCS char at line 1
--
David

This works:
colnames(get(i))[7]
[1] "A.Adjusted.1"

And this is what I want to change the column name to:
paste(i, ".MarketCap", sep = "")
[1] "A.MarketCap"

But how do I make the assignment?  This clearly doesn't work:

colnames(get(i))[7] <-  paste(i, ".MarketCap", sep = "")
Error in colnames(get(i))[7] <- paste(i, ".MarketCap", sep = "") :
 could not find function "get<-"

Nor does this (it creates a new object "A.Adjusted.1" with a value of
"A.MarketCap") :

assign(colnames(get(i))[7], paste(i, ".MarketCap", sep = ""))

How can I change the name of that column within my big loop?  Any
ideas?  Thanks!

Best regards,


James

______________________________________________
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.
David Winsemius, MD
West Hartford, CT

______________________________________________
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