[R] help to program my function

Petr PIKAL petr.pikal at precheza.cz
Wed Aug 8 12:04:08 CEST 2012


Hi

Maybe it is time for you to read some basic stuff like R intro. It seems 
to me that you expect R to behave like some other language you know but 
probably your expectation is wrong.

See inline

> 
> HI
> 
> >i have a problem please help me to solve it: 
> http://r.789695.n4.nabble.com/file/n4639434/aj.pdf aj.pdf 
> 
> >i want to calculate the vecteur a[j] where j: 1...8
> 
> >this is the code in R:
> 
> >aj.fun <- function(j, i, X, z, E, beta0, beta1){
> + n <- length(X)
> + iX <- order(X)
> + iz <- order(z)
> + e1 <- -(beta)*z[ iz[1:(i - 1)] ]

where do you get beta

> + numer <- E[j] - sum( X[ iX[1:(i - 1)] ] * exp(e1) )
> + e2 <- -(beta)*z[ iz[i:n] ]
> + denom <- sum( exp(e2) )
> + numer/denom
> + }
> 
> > iX<-order(X)
> > iX
>  [1] 75 37 29 60 73 20 69 55 30 70 72 38 26 35 65 61 74 50 71 57 25 54 
64 76
> 56
> [26] 58 48 67 46 63 28 62 36 49 47 66  1 42 41 19 39 43 22 51 68 33 27 9 
15
> 11
> [51] 10 59 32 40 45 44 52 16 18 34  4 53 21 23 31  7  6 13 14 12 17 24 5 
 8 
> 2
> [76]  3
> 
> > iZ<-order(Z)
> > iZ
>  [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 
23 24
> 25
> [26] 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 
48 49
> 50
> [51] 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 
73 74
> 75
> [76] 76
> 
> >e1 <- -(beta)*Z[ iZ[1:(i - 1)] ]
> Warning message:
> In 1:(i - 1) : numerical expression has 76 elements: only the first used

As somebody already mentioned i is probably vector and in this case only 
first value is taken. i seems to have the firs value 3.

> > e1
> [1]  -442 -1664
> 
> >> numer <- E[j] - sum( X[ iX[1:(i - 1)] ] * exp(e1))
> Warning message:
> In 1:(i - 1) : numerical expression has 76 elements: only the first used
> > numer
> [1] 9.5 9.5 9.5 9.5 9.5 9.5 9.5 9.5

Here j is vector of 8 values therefore 8 values

> 
> >> e2 <- -(beta)*Z[ iZ[i:n] ]
> Warning message:
> In i:n : numerical expression has 76 elements: only the first used
> > e2
>  [1]  -442 -1664  -442 -1792  -476 -1792  -476 -1792  -510 -1920  -510 
-1920
> [13]  -510 -1920  -510 -1920  -510 -1920  -510 -2048  -544 -2048  -544 
-2048
> [25]  -544 -2048  -544 -2048  -544 -2048  -544 -2048  -544 -2048  -578 
-2176
> [37]  -578 -2176  -578 -2176  -578 -2176  -578 -2176  -578 -2176  -578 
-2176
> [49]  -578 -2176  -578 -2176  -578 -2304  -612 -2304  -612 -2304  -612 
-2304
> [61]  -612 -2304  -612 -2304  -612 -2304  -612 -2304  -646 -2432  -646 
-2432
> [73]  -646 -2432  -646 -2432

Strange, here first value of i seems to be 1 as n shall be 76 and final e2 
length is 76. 

> > denom <- sum( exp(e2) )


> > numer/denom
> [1] 4.313746e+192 4.313746e+192 4.313746e+192 4.313746e+192 
4.313746e+192
> [6] 4.313746e+192 4.313746e+192 4.313746e+192
> 
> >my problem that the vecteur a[j] could not have the same number!!!

I do not understand. Your numer is 9.5 repeted 8 times. If you divide it 
by one number you will get nine times the same number.

You send us a code but no data so it is difficult to understand what is 
your goal. It would be better to send input data

j, i, X, z, E, beta0, beta1

and assumed result in whole not in chunks scattered in several mails.

Regards
Petr


> 
> 
> thank you in advance
> hafida
> 
> 
> 
> --
> View this message in context: http://r.789695.n4.nabble.com/help-to-
> program-my-function-tp4639434.html
> Sent from the R help mailing list archive at Nabble.com.
> 
> ______________________________________________
> 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.



More information about the R-help mailing list