Hello,
Thanks in advance for any help!
How do I pass an unknown number of objects into the "..." (dot dot
dot)
parameter? Put another way, is there some standard way to pass multiple
objects into "..." to "fool" the function into thinking the
objects are
passed in separately/explicitly with common separation (like "x,y,z"
when
x, y and z are objects to be passed into "...")?
Details:
I'm working with this parameter list and function:
interval_intersection(x, ..., check_valid = TRUE)
To illustrate...
This works and I get the expected interval:
library('intervals')
# create individual Intervals objects
z = Intervals(c(1,10))
y = Intervals(c(5,10))
x = Intervals(c(4,6))> interval_intersection(x,y,z)
Object of class Intervals
1 interval over R:
[5, 6]
...but at run time I don't know how many Intervals objects I will have so I
can't list them explicitly like this "x,y,z". So I build a matrix
of
Intervals (per the package manual) and the function doesn't work:
> xyz = matrix(c(4,5,1,6,10,10),nrow=3)
> xyz
[,1] [,2]
[1,] 4 6
[2,] 5 10
[3,] 1 10> xyz_interval = Intervals(xyz)
> interval_intersection(xyz_interval)
Object of class Intervals
1 interval over R:
[1, 10]
...[1,10] is unexpected/wrong because I want the intersection of the three
intervals. So I conclude that I need to pass in the individual Intervals
objects, but how do I do that if I don't know how many I have at run time?
I tried putting them in a list, but that didn't work. I also tried using
paste( ,sep=',') and get().
Is there some standard way to pass multiple objects into "..." to
"fool"
the function into thinking they are passed in separately/explicitly with
common separation?
Thanks!
ben
[[alternative HTML version deleted]]
Hi, On Tue, May 15, 2012 at 12:46 PM, Ben quant <ccquant at gmail.com> wrote:> Hello, > > Thanks in advance for any help! > > How do I pass an unknown number of objects into the "..." (dot dot dot) > parameter? Put another way, is there some standard way to pass multiple > objects into "..." to "fool" the function into thinking the objects are > passed in separately/explicitly with common separation (like "x,y,z" when > x, y and z are objects to be passed into "...")?Calling `list(...)` will return a list as long as there are elements caught in `...` Does this help? R> howMany <- function(...) { args <- list(...) cat("There are", length(args), "items passed in here\n") } R> howMany(1, 2, 3, 4) There are 4 items passed in here R> howMany(10, list(1:10)) There are 2 items passed in here -steve -- Steve Lianoglou Graduate Student: Computational Systems Biology ?| Memorial Sloan-Kettering Cancer Center ?| Weill Medical College of Cornell University Contact Info: http://cbio.mskcc.org/~lianos/contact
Are you perhaps looking for the do.call() construction?
z = Intervals(c(1,10))
y = Intervals(c(5,10))
x = Intervals(c(4,6))
do.call("interval_intersection", list(x,y,z))
Michael
On Tue, May 15, 2012 at 12:46 PM, Ben quant <ccquant at gmail.com>
wrote:> Hello,
>
> Thanks in advance for any help!
>
> How do I pass an unknown number of objects into the "..." (dot
dot dot)
> parameter? Put another way, is there some standard way to pass multiple
> objects into "..." to "fool" the function into thinking
the objects are
> passed in separately/explicitly with common separation (like
"x,y,z" when
> x, y and z are objects to be passed into "...")?
>
> Details:
>
> I'm working with this parameter list and function:
>
> interval_intersection(x, ..., check_valid = TRUE)
>
> To illustrate...
>
> This works and I get the expected interval:
>
> library('intervals')
> # create individual Intervals objects
> z = Intervals(c(1,10))
> y = Intervals(c(5,10))
> x = Intervals(c(4,6))
>> interval_intersection(x,y,z)
> Object of class Intervals
> 1 interval over R:
> [5, 6]
>
> ...but at run time I don't know how many Intervals objects I will have
so I
> can't list them explicitly like this "x,y,z". So I build a
matrix of
> Intervals (per the package manual) and the function doesn't work:
>
>> xyz = matrix(c(4,5,1,6,10,10),nrow=3)
>> xyz
> ? ? [,1] [,2]
> [1,] ? ?4 ? ?6
> [2,] ? ?5 ? 10
> [3,] ? ?1 ? 10
>> xyz_interval = Intervals(xyz)
>> interval_intersection(xyz_interval)
> Object of class Intervals
> 1 interval over R:
> [1, 10]
>
> ...[1,10] is unexpected/wrong because I want the intersection of the three
> intervals. So I conclude that I need to pass in the individual Intervals
> objects, but how do I do that if I don't know how many I have at run
time?
> I tried putting them in a list, but that didn't work. I also tried
using
> paste( ? ?,sep=',') and get().
>
> Is there some standard way to pass multiple objects into "..." to
"fool"
> the function into thinking they are passed in separately/explicitly with
> common separation?
>
> Thanks!
> ben
>
> ? ? ? ?[[alternative HTML version deleted]]
>
> ______________________________________________
> 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.