[R] Another quantmod question
Joshua Wiley
jwiley.psych at gmail.com
Sun May 8 21:26:05 CEST 2011
Hi Russ,
On Sun, May 8, 2011 at 12:07 PM, Russ Abbott <russ.abbott at gmail.com> 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
It would be appreciated in the future if you provided the object via
dput() or some such that is easy to paste in.
>
>
> 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)
>
> 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?
Yes.
mat <- matrix(1:10, dimnames = list(NULL, "A"))
cbind(X = 11:20, Y = mat + 1)
cbind(X = 11:20, Y = mat[, "A"] + 1)
In particular note that:
class(mat)
class(mat[, "A"])
It is silly to expect to be able to pass a single name for an entire
matrix, while it makes complete sense that that would work for a
vector. The problem with naming the column the same thing as the
object containing it, is our limited human minds get ramfeezled (R
does just fine, as you can see).
>
> 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?
Nope, but do check the type of object you are working with---there are
often different methods for different objects so I would not assumet
that all things would work the same.
Cheers,
Josh
>
> 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]]
Please post using plain text.
>
> ______________________________________________
> 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.
--
Joshua Wiley
Ph.D. Student, Health Psychology
University of California, Los Angeles
http://www.joshuawiley.com/
More information about the R-help
mailing list