[R] Another quantmod question

David Winsemius dwinsemius at comcast.net
Sun May 8 21:21:21 CEST 2011


On May 8, 2011, at 3:07 PM, Russ Abbott wrote:

> I'm having troubles with the names of columns.
>
> quantmod deal with stock quotes.  I've created an array of the first 5
> closing prices from Jan 2007. (Is there a problem that the name is  
> the same
> as the variable name? There shouldn't be.)
>
>> close
>
>             close
>
> 2007-01-03 1416.60
>
> 2007-01-04 1418.34
>
> 2007-01-05 1409.71
>
> 2007-01-08 1412.84
>
> 2007-01-09 1412.11
>
>
> When I try to create a more complex array by adding columns, the  
> names get
> fouled up.  Here's a simple example.
>
>> cbind(changed.close = close+1, zero = 0, close)

I suspect that you are actually using xts objects that you are  
incorrectly calling 'array's. If something is puzzling about the  
behavior of an R object the first thing to do is see what you are  
really dealing with so ... str(object)

If you load the xts package and type ?cbind.xts , you get a help page  
for merge.xts.

(In base R I do not know of a way to assign columns the way you  
propose within a `merge` call.)

Here is the code for cbind.xts:

 > cbind.xts
function (..., all = TRUE, fill = NA, suffixes = NULL)
{
     merge.xts(..., all = all, fill = fill, suffixes = suffixes)
}
<environment: namespace:xts>



>
>             close zero close.1
>
> 2007-01-03 1417.60    0 1416.60
>
> 2007-01-04 1419.34    0 1418.34
>
> 2007-01-05 1410.71    0 1409.71
>
> 2007-01-08 1413.84    0 1412.84
>
> 2007-01-09 1413.11    0 1412.11
>
>
> The first column should be called "changed.close", but it's called  
> "close".
> The second column has the right name. The third column should be  
> called
> "close" but it's called "close.1". Why is that? Am I missing  
> something?
>
> If I change the order of the columns and let close have its original  
> name,
> there is still a problem.
>
>> cbind(close, zero = 0, changed.close = close+1)
>
>             close zero close.1
>
> 2007-01-03 1416.60    0 1417.60
>
> 2007-01-04 1418.34    0 1419.34
>
> 2007-01-05 1409.71    0 1410.71
>
> 2007-01-08 1412.84    0 1413.84
>
> 2007-01-09 1412.11    0 1413.11
>
>
> Now the names on the first two columns are ok, but the third column  
> is still
> wrong. Again, why is that?  Apparently it's not letting me assign a  
> name to
> a column that comes from something that already has a name.  Is that  
> the way
> it should be?
>
> I don't get that same problem on a simpler example.
>
>> IX <- cbind(I=0, X=(1:3))
>
>> IX
>
>     I X
>
> [1,] 0 1
>
> [2,] 0 2
>
> [3,] 0 3
>
>> cbind(Y = 1, Z = IX[, "I"], W = IX[, "X"])
>
>     Y Z W
>
> [1,] 1 0 1
>
> [2,] 1 0 2
>
> [3,] 1 0 3
>
>
> Is this a peculiarity to xts objects?
>
> Thanks.
>
> *-- Russ *
> *
> *
> P.S. Once again I feel frustrated because it's taken me far more  
> time than
> it deserves to track down and characterize this problem. I can fix  
> it by
> using the names function. But I shouldn't have to do that.
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at 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



More information about the R-help mailing list