Skip to content

using double loops and saving the data

6 messages · ChinChin, David Winsemius, PIKAL Petr

#
Hi,

I am the first R user, I have met some problem and I am seeking for help.

I am estimating the wealth of a shareholder.
First, I simulated 10000 set of price, each set of price contains 5200
prices which reflect the price goes up and down through out the year.

Price  # consists of all set the price

After that, I use each set of price to calculate the wealth for each sample
(10000) and save the data in a character, so, I do this :

q <- 0.9
Wealth <- list()
for (s in 1:10000) {
for (i in 1:5200){
Ca[i+1] <- Cash(i,q,Price[[s]][i+1])
Sh[i+1] <- Share(i,q,Price[[s]][i+1])
Po[i+1] <- Position(i,q,Price[[s]][i+1])
Wealth[[s]][i] <- Ca[i+1]+Po[i+1]
}}

*note = Ca, Sh, and Po are the vectors with length of 5200, and the Cash,
Share and Position are functions that I created by myself. I am very sure
that these can be work properly.
Ca, Sh and Po will change when it use difference set of price ( I think).

After I run them, it gave the error message: Error in `*tmp*`[[s]] :
subscript out of bounds

I could run all this when I had just 1 set of price :
for (i in 1:5200){
Ca[i+1] <- Cash(i,q,Price[i+1])
Sh[i+1] <- Share(i,q,Price[i+1])
Po[i+1] <- Position(i,q,Price[i+1])
Wealth[[s]][i] <- Ca[i+1]+Po[i+1]
}

So, I wonder the error occurs on that I use the double loops in improper way
or the data I save in incorrect way.

hope you can understand what I am asking and I appreciate that you answer my
question.
#
On Apr 11, 2010, at 8:23 PM, ChinChin wrote:

            
I am guessing that the first time through when i= 5200 that i+1 is  
indexing an entry that does not exist. What does str( Price[[1]] 
[5200+1] ) return? What about str(Ca)?
So what is supposed to happen when you try "Ca[5200+1] <- "... anything?
Really?   I thought you said you had 5200 entries in Price?
You need to read the error message. And you need to offer better  
information about the objects you are working with.
#
David Winsemius wrote:

  
    
#
Hi

r-help-bounces at r-project.org napsal dne 12.04.2010 07:14:14:
anything?
for
You did not tell much more about your data and procedures. Each object 
type has some distinct way of indexing and you can not mix them up. 

x<-1:10
[1] 5
[1] 5
Error in x[5, ] : incorrect number of dimensions
[[1]]
 [1]  1  2  3  4  5  6  7  8  9 10
[[1]]
NULL
Error in x[[5]] : subscript out of bounds
[[1]]
NULL
[1] 5

Nobody except you has your data available, so without providing more clues 
you can not expect mor relevant answers.

Try str(your.objects) and maybe you could use debug to see how they are 
operating and changing through a cycle.

Regards
Petr
http://n4.nabble.com/using-double-loops-and-saving-the-data-tp1836591p1836591.html
http://n4.nabble.com/using-double-loops-and-
http://www.R-project.org/posting-guide.html
#
Petr Pikal wrote:
I think I got what you mean, so that I can't use the 
"Wealth1[[s]][i] <- Ca[i+1]+Po[i+1]"
in the last line of loops.

Is there any code I can use the store the data?
I aim to store the data like :
a <- "x1" "x2" "x3" "x4" ...
and in each entry of a
x1 <- 1  2  3  4  5  6  7  ...
the entries in "x1" are the "wealth" that I want estimate.
Please tell me the code to store these type of data. Thanks. :)

actually I can create the Price[[i]] by coding "Price = list()" before I
simulate the price
#
Hi

r-help-bounces at r-project.org napsal dne 12.04.2010 12:51:24:
<snip>
clues
are
What is x1, x2, ....? If they are just character constants a can be 
character vector.
and the same applies here. x1 can be numeric vector.

I do not see any problem.
What type of data? You did not tell us anything useful about structure of 
data. Please provide at least output from

str(your.data.objects.you.want.to.put.together)

as Leonard da Quirm would say

Regards
Petr
http://n4.nabble.com/using-double-loops-and-
http://www.R-project.org/posting-guide.html