this 'ifelse' usage looks promising.
thank you very much.

On Thu, May 7, 2009 at 3:12 PM, Patrick Burns <pburns@pburns.seanet.com>wrote:

> If you haven't seen it yet,
> 'The R Inferno' may be of use
> to you.
>
>
> Patrick Burns
> patrick@burns-stat.com
> +44 (0)20 8525 0696
> http://www.burns-stat.com
> (home of "The R Inferno" and "A Guide for the Unwilling S User")
>
> miraceti wrote:
>
>> Hi, I am still not familiar with vectorization.
>> Could you help with making this for loop more efficient?
>> The code is trying to make a Q matrix for a multidimensional state space
>> with specific conditions.
>>
>> thanks
>> Mira
>>
>>
>> tmp = 0:(maxvals[1])
>> for(i in 2:nchars) {
>>  tmp <- outer(tmp, 0:(maxvals[i]), FUN="paste", sep=".")
>> }
>> states = tmp
>> stateidx = array(1:length(states), dim=dim(states))
>> transition <- matrix(data=0, nrow=length(states), ncol=length(states))
>>
>> findstatedim <- function(x) which(stateidx==x, arr.ind = TRUE)
>> manhattandistance <- function(x,y)
>> sum(abs(findstatedim(x)-findstatedim(y)))
>>
>>    for(i in 1:length(states)) {
>>      for (j in 1:length(states)) {
>>        if (manhattandistance(i, j)==1) {
>>          if (sum(findstatedim(i)-findstatedim(j)) < 0) {
>>            transition[i,j] = "gain"
>>            if (findstatedim(i)[findstatedim(i)-findstatedim(j) == -1] ==
>> 1)
>> {
>>              transition[i,j] = "firstgain"
>>            }
>>          }
>>          else {
>>            transition[i,j] = "loss"
>>          }
>>        }
>>      }
>>    }
>> transition
>>
>>        [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> 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.
>>
>>
>>

	[[alternative HTML version deleted]]


