Does 'unlist' do it for you:
> w <- c(3,3,2,1) # vector of weights
> q <- 4 # theshold
>
> # computes which coordinate of w is decisive in each permutation
> res <- unlist(sapply( permn(w), function(x) which(w ==
x[min(which(cumsum(x) >=q))]) ))
>
> # complies the frequencies
> prop.table( tabulate( res ))
[1] 0.4 0.4 0.1 0.1>
On Tue, Aug 11, 2009 at 7:03 AM, Serguei
Kaniovski<Serguei.Kaniovski at wifo.ac.at> wrote:> Hello!
> I have the following combinatorial problem.
> Consider the cumulative sums of all permutations of a given weight vector
> 'w'. I need to know how often weight in a certain position brings
the
> cumulative sums equal or above the given threshold 'q'. In other
words,
> how often each weight is decisive in raising the cumulative sum above
'q'?
>
> Here is what I do:
>
> w <- c(3,2,1) ?# vector of weights
> q <- 4 ?# theshold
>
> # computes which coordinate of w is decisive in each permutation
> res <- sapply( permn(w), function(x) which(w == x[min(which(cumsum(x)
>> q))]) )
>
> # complies the frequencies
> prop.table( tabulate( res ))
>
>
> The problem I have is that when the weights are not unique, the which()
> function returns a list as opposed to a vector. I don?t know how to
> proceed when this happens, as tabulate does not work on lists.
>
> The answer, of course, should be that equal weights are ?decisive? equally
> often.
>
>
> Can you help?
> Thanks a lot!
>
> Serguei Kaniovski
>
> ______________________________________________
> 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.
>
--
Jim Holtman
Cincinnati, OH
+1 513 646 9390
What is the problem that you are trying to solve?