[R] how to save this result in a vector

Erich Neuwirth erich.neuwirth at univie.ac.at
Mon Nov 1 12:55:40 CET 2010


My guess is that what you want probably is best done by using ecdf.
You might want to look it up in the docs.

1-ecdf(test)(x)
Will give you the percentage of values in test larger than x.


On 11/1/2010 2:24 AM, Changbin Du wrote:
> Thanks Joshua! Yes, i is not going up sequentially  by 1, as i here is the
> raw number of reads for each DNA base. Thanks so much for the great help!
> 
> 
> On Sun, Oct 31, 2010 at 6:03 PM, Joshua Wiley <jwiley.psych at gmail.com>wrote:
> 
>> On Sun, Oct 31, 2010 at 5:44 PM, Joshua Wiley <jwiley.psych at gmail.com>
>> wrote:
>> <snip>
>>> #cover is a vector
>>> cover_per <- function(cover) {
>>>  ## create a vector to store the results of your for loop
>>>  output <- vector("numeric", length(min(cover):max(cover)))
>>>  for (i in min(cover):max(cover)) {
>>>    ## rather than print()ing the output, assign it to an object
>>>    output[i] <- 100*sum(ifelse(cover >= i, 1, 0))/length(cover)
>>>  }
>>>  ## have the return value from the function be
>>>  ## the object 'output'
>>>  return(output)
>>> }
>>
>> I did not catch that i was not necessarily starting at 1 going
>> sequentially up, so that would have to be done manually (or use cumsum
>> per David rather than the function you wrote).
>>
>> cover_per2 <- function(cover) {
>>   output <- vector("numeric", length(min(cover):max(cover)))
>>   j <- 1
>>   for (i in min(cover):max(cover)) {
>>     output[j] <- 100*sum(ifelse(cover >= i, 1, 0))/length(cover)
>>    j <- j + 1
>>  }
>>  return(output)
>> }
>>
>> Josh
>>
> 
> 
>



More information about the R-help mailing list