Change Function based on ifelse() condtion

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

Change Function based on ifelse() condtion

Bogaso
Hi again,

I am looking for some way to alternately use 2 related functions,
based on some ifelse() condition.

For example, I have 2 functions mclapply() and lapply()

However, mclapply() function has one extra parameter 'mc.cores' which
lapply doesnt not have.

I know when mc.cores = 1, these 2 functions are essentially same,
however I am looking for more general way to control them within
ifelse() constion

Can someone please help me how can I use them within ifelse() condition.

Thanks for your pointer

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
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.
Reply | Threaded
Open this post in threaded view
|

Re: Change Function based on ifelse() condtion

Duncan Murdoch-2
On 04/03/2018 10:39 AM, Christofer Bogaso wrote:

> Hi again,
>
> I am looking for some way to alternately use 2 related functions,
> based on some ifelse() condition.
>
> For example, I have 2 functions mclapply() and lapply()
>
> However, mclapply() function has one extra parameter 'mc.cores' which
> lapply doesnt not have.
>
> I know when mc.cores = 1, these 2 functions are essentially same,
> however I am looking for more general way to control them within
> ifelse() constion
>
> Can someone please help me how can I use them within ifelse() condition.

Don't.  ifelse() usually evaluates *both* the true and false values, and
then selects entries from each.  Just use an if statement.

Duncan Murdoch

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
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.
Reply | Threaded
Open this post in threaded view
|

Re: Change Function based on ifelse() condtion

Bogaso
Hi,

As an example, I want to create below kind of custom Function which
either be mclapply pr lapply

Lapply_me = function(X = X, FUN = FUN, ..., Apply_MC = FALSE) {
if (Apply_MC) {
return(mclapply(X, FUN, ...))
} else {
if (any(names(list(...)) == 'mc.cores')) {
list(...) = list(...)[!names(list(...)) %in% 'mc.cores']
}
return(lapply(X, FUN, ...))
}
}

However when Apply_MC = FALSE it generates below error saying :

  '...' used in an incorrect context


Appreciate if you can help me with the correct approach. Thanks,


On Sun, Mar 4, 2018 at 9:34 PM, Duncan Murdoch <[hidden email]> wrote:

> On 04/03/2018 10:39 AM, Christofer Bogaso wrote:
>>
>> Hi again,
>>
>> I am looking for some way to alternately use 2 related functions,
>> based on some ifelse() condition.
>>
>> For example, I have 2 functions mclapply() and lapply()
>>
>> However, mclapply() function has one extra parameter 'mc.cores' which
>> lapply doesnt not have.
>>
>> I know when mc.cores = 1, these 2 functions are essentially same,
>> however I am looking for more general way to control them within
>> ifelse() constion
>>
>> Can someone please help me how can I use them within ifelse() condition.
>
>
> Don't.  ifelse() usually evaluates *both* the true and false values, and
> then selects entries from each.  Just use an if statement.
>
> Duncan Murdoch

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
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.
Reply | Threaded
Open this post in threaded view
|

Re: Change Function based on ifelse() condtion

Eric Berger
Hi Christofer,
You cannot assign to list(...). You can do the following

myList <- list(...)[!names(list(...)) %in% 'mc.cores']

HTH,
Eric

On Sun, Mar 4, 2018 at 6:38 PM, Christofer Bogaso <
[hidden email]> wrote:

> Hi,
>
> As an example, I want to create below kind of custom Function which
> either be mclapply pr lapply
>
> Lapply_me = function(X = X, FUN = FUN, ..., Apply_MC = FALSE) {
> if (Apply_MC) {
> return(mclapply(X, FUN, ...))
> } else {
> if (any(names(list(...)) == 'mc.cores')) {
> list(...) = list(...)[!names(list(...)) %in% 'mc.cores']
> }
> return(lapply(X, FUN, ...))
> }
> }
>
> However when Apply_MC = FALSE it generates below error saying :
>
>   '...' used in an incorrect context
>
>
> Appreciate if you can help me with the correct approach. Thanks,
>
>
> On Sun, Mar 4, 2018 at 9:34 PM, Duncan Murdoch <[hidden email]>
> wrote:
> > On 04/03/2018 10:39 AM, Christofer Bogaso wrote:
> >>
> >> Hi again,
> >>
> >> I am looking for some way to alternately use 2 related functions,
> >> based on some ifelse() condition.
> >>
> >> For example, I have 2 functions mclapply() and lapply()
> >>
> >> However, mclapply() function has one extra parameter 'mc.cores' which
> >> lapply doesnt not have.
> >>
> >> I know when mc.cores = 1, these 2 functions are essentially same,
> >> however I am looking for more general way to control them within
> >> ifelse() constion
> >>
> >> Can someone please help me how can I use them within ifelse() condition.
> >
> >
> > Don't.  ifelse() usually evaluates *both* the true and false values, and
> > then selects entries from each.  Just use an if statement.
> >
> > Duncan Murdoch
>
> ______________________________________________
> [hidden email] mailing list -- To UNSUBSCRIBE and more, see
> 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]]

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
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.
Reply | Threaded
Open this post in threaded view
|

Re: Change Function based on ifelse() condtion

Bogaso
@Eric - with this approach I am getting below error :

Error in FUN(X[[i]], ...) : unused argument (list())

On Sun, Mar 4, 2018 at 10:18 PM, Eric Berger <[hidden email]> wrote:

> Hi Christofer,
> You cannot assign to list(...). You can do the following
>
> myList <- list(...)[!names(list(...)) %in% 'mc.cores']
>
> HTH,
> Eric
>
> On Sun, Mar 4, 2018 at 6:38 PM, Christofer Bogaso
> <[hidden email]> wrote:
>>
>> Hi,
>>
>> As an example, I want to create below kind of custom Function which
>> either be mclapply pr lapply
>>
>> Lapply_me = function(X = X, FUN = FUN, ..., Apply_MC = FALSE) {
>> if (Apply_MC) {
>> return(mclapply(X, FUN, ...))
>> } else {
>> if (any(names(list(...)) == 'mc.cores')) {
>> list(...) = list(...)[!names(list(...)) %in% 'mc.cores']
>> }
>> return(lapply(X, FUN, ...))
>> }
>> }
>>
>> However when Apply_MC = FALSE it generates below error saying :
>>
>>   '...' used in an incorrect context
>>
>>
>> Appreciate if you can help me with the correct approach. Thanks,
>>
>>
>> On Sun, Mar 4, 2018 at 9:34 PM, Duncan Murdoch <[hidden email]>
>> wrote:
>> > On 04/03/2018 10:39 AM, Christofer Bogaso wrote:
>> >>
>> >> Hi again,
>> >>
>> >> I am looking for some way to alternately use 2 related functions,
>> >> based on some ifelse() condition.
>> >>
>> >> For example, I have 2 functions mclapply() and lapply()
>> >>
>> >> However, mclapply() function has one extra parameter 'mc.cores' which
>> >> lapply doesnt not have.
>> >>
>> >> I know when mc.cores = 1, these 2 functions are essentially same,
>> >> however I am looking for more general way to control them within
>> >> ifelse() constion
>> >>
>> >> Can someone please help me how can I use them within ifelse()
>> >> condition.
>> >
>> >
>> > Don't.  ifelse() usually evaluates *both* the true and false values, and
>> > then selects entries from each.  Just use an if statement.
>> >
>> > Duncan Murdoch
>>
>> ______________________________________________
>> [hidden email] mailing list -- To UNSUBSCRIBE and more, see
>> 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.
>
>

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
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.
Reply | Threaded
Open this post in threaded view
|

Re: Change Function based on ifelse() condtion

Eric Berger
Hi Christofer,
Before you made the change that I suggested, your program was stopping at
the statement: list(...) = list(..) .etc
This means that it never tried to execute the statement:
return(lapply(X,FUN,...))
Now that you have made the change, it gets past the first statement and
tries to execute the statement: return(lapply(X,FUN,...)).
That attempt is generating the error message because whatever you are
passing in as the FUN argument is not expecting extra arguments.

HTH,
Eric


On Sun, Mar 4, 2018 at 6:52 PM, Christofer Bogaso <
[hidden email]> wrote:

> @Eric - with this approach I am getting below error :
>
> Error in FUN(X[[i]], ...) : unused argument (list())
>
> On Sun, Mar 4, 2018 at 10:18 PM, Eric Berger <[hidden email]>
> wrote:
> > Hi Christofer,
> > You cannot assign to list(...). You can do the following
> >
> > myList <- list(...)[!names(list(...)) %in% 'mc.cores']
> >
> > HTH,
> > Eric
> >
> > On Sun, Mar 4, 2018 at 6:38 PM, Christofer Bogaso
> > <[hidden email]> wrote:
> >>
> >> Hi,
> >>
> >> As an example, I want to create below kind of custom Function which
> >> either be mclapply pr lapply
> >>
> >> Lapply_me = function(X = X, FUN = FUN, ..., Apply_MC = FALSE) {
> >> if (Apply_MC) {
> >> return(mclapply(X, FUN, ...))
> >> } else {
> >> if (any(names(list(...)) == 'mc.cores')) {
> >> list(...) = list(...)[!names(list(...)) %in% 'mc.cores']
> >> }
> >> return(lapply(X, FUN, ...))
> >> }
> >> }
> >>
> >> However when Apply_MC = FALSE it generates below error saying :
> >>
> >>   '...' used in an incorrect context
> >>
> >>
> >> Appreciate if you can help me with the correct approach. Thanks,
> >>
> >>
> >> On Sun, Mar 4, 2018 at 9:34 PM, Duncan Murdoch <
> [hidden email]>
> >> wrote:
> >> > On 04/03/2018 10:39 AM, Christofer Bogaso wrote:
> >> >>
> >> >> Hi again,
> >> >>
> >> >> I am looking for some way to alternately use 2 related functions,
> >> >> based on some ifelse() condition.
> >> >>
> >> >> For example, I have 2 functions mclapply() and lapply()
> >> >>
> >> >> However, mclapply() function has one extra parameter 'mc.cores' which
> >> >> lapply doesnt not have.
> >> >>
> >> >> I know when mc.cores = 1, these 2 functions are essentially same,
> >> >> however I am looking for more general way to control them within
> >> >> ifelse() constion
> >> >>
> >> >> Can someone please help me how can I use them within ifelse()
> >> >> condition.
> >> >
> >> >
> >> > Don't.  ifelse() usually evaluates *both* the true and false values,
> and
> >> > then selects entries from each.  Just use an if statement.
> >> >
> >> > Duncan Murdoch
> >>
> >> ______________________________________________
> >> [hidden email] mailing list -- To UNSUBSCRIBE and more, see
> >> 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]]

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
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.
Reply | Threaded
Open this post in threaded view
|

Re: Change Function based on ifelse() condtion

Bogaso
My modified function looks below :

Lapply_me = function(X = X, FUN = FUN, Apply_MC = FALSE, ...) {
if (Apply_MC) {
return(mclapply(X, FUN, ...))
} else {
if (any(names(list(...)) == 'mc.cores')) {
myList = list(...)[!names(list(...)) %in% 'mc.cores']
}
return(lapply(X, FUN, myList))
}
}

Here, I am not passing ... anymore rather passing myList

On Sun, Mar 4, 2018 at 10:37 PM, Eric Berger <[hidden email]> wrote:

> Hi Christofer,
> Before you made the change that I suggested, your program was stopping at
> the statement: list(...) = list(..) .etc
> This means that it never tried to execute the statement:
> return(lapply(X,FUN,...))
> Now that you have made the change, it gets past the first statement and
> tries to execute the statement: return(lapply(X,FUN,...)).
> That attempt is generating the error message because whatever you are
> passing in as the FUN argument is not expecting extra arguments.
>
> HTH,
> Eric
>
>
> On Sun, Mar 4, 2018 at 6:52 PM, Christofer Bogaso
> <[hidden email]> wrote:
>>
>> @Eric - with this approach I am getting below error :
>>
>> Error in FUN(X[[i]], ...) : unused argument (list())
>>
>> On Sun, Mar 4, 2018 at 10:18 PM, Eric Berger <[hidden email]>
>> wrote:
>> > Hi Christofer,
>> > You cannot assign to list(...). You can do the following
>> >
>> > myList <- list(...)[!names(list(...)) %in% 'mc.cores']
>> >
>> > HTH,
>> > Eric
>> >
>> > On Sun, Mar 4, 2018 at 6:38 PM, Christofer Bogaso
>> > <[hidden email]> wrote:
>> >>
>> >> Hi,
>> >>
>> >> As an example, I want to create below kind of custom Function which
>> >> either be mclapply pr lapply
>> >>
>> >> Lapply_me = function(X = X, FUN = FUN, ..., Apply_MC = FALSE) {
>> >> if (Apply_MC) {
>> >> return(mclapply(X, FUN, ...))
>> >> } else {
>> >> if (any(names(list(...)) == 'mc.cores')) {
>> >> list(...) = list(...)[!names(list(...)) %in% 'mc.cores']
>> >> }
>> >> return(lapply(X, FUN, ...))
>> >> }
>> >> }
>> >>
>> >> However when Apply_MC = FALSE it generates below error saying :
>> >>
>> >>   '...' used in an incorrect context
>> >>
>> >>
>> >> Appreciate if you can help me with the correct approach. Thanks,
>> >>
>> >>
>> >> On Sun, Mar 4, 2018 at 9:34 PM, Duncan Murdoch
>> >> <[hidden email]>
>> >> wrote:
>> >> > On 04/03/2018 10:39 AM, Christofer Bogaso wrote:
>> >> >>
>> >> >> Hi again,
>> >> >>
>> >> >> I am looking for some way to alternately use 2 related functions,
>> >> >> based on some ifelse() condition.
>> >> >>
>> >> >> For example, I have 2 functions mclapply() and lapply()
>> >> >>
>> >> >> However, mclapply() function has one extra parameter 'mc.cores'
>> >> >> which
>> >> >> lapply doesnt not have.
>> >> >>
>> >> >> I know when mc.cores = 1, these 2 functions are essentially same,
>> >> >> however I am looking for more general way to control them within
>> >> >> ifelse() constion
>> >> >>
>> >> >> Can someone please help me how can I use them within ifelse()
>> >> >> condition.
>> >> >
>> >> >
>> >> > Don't.  ifelse() usually evaluates *both* the true and false values,
>> >> > and
>> >> > then selects entries from each.  Just use an if statement.
>> >> >
>> >> > Duncan Murdoch
>> >>
>> >> ______________________________________________
>> >> [hidden email] mailing list -- To UNSUBSCRIBE and more, see
>> >> 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.
>> >
>> >
>
>

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
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.
Reply | Threaded
Open this post in threaded view
|

Re: Change Function based on ifelse() condtion

Eric Berger
That's fine. The issue is how you called Lapply_me(). What did you pass as
the argument to FUN?
And if you did not pass anything that how is FUN declared?
You have not shown that in your email.




On Sun, Mar 4, 2018 at 7:11 PM, Christofer Bogaso <
[hidden email]> wrote:

> My modified function looks below :
>
> Lapply_me = function(X = X, FUN = FUN, Apply_MC = FALSE, ...) {
> if (Apply_MC) {
> return(mclapply(X, FUN, ...))
> } else {
> if (any(names(list(...)) == 'mc.cores')) {
> myList = list(...)[!names(list(...)) %in% 'mc.cores']
> }
> return(lapply(X, FUN, myList))
> }
> }
>
> Here, I am not passing ... anymore rather passing myList
>
> On Sun, Mar 4, 2018 at 10:37 PM, Eric Berger <[hidden email]>
> wrote:
> > Hi Christofer,
> > Before you made the change that I suggested, your program was stopping at
> > the statement: list(...) = list(..) .etc
> > This means that it never tried to execute the statement:
> > return(lapply(X,FUN,...))
> > Now that you have made the change, it gets past the first statement and
> > tries to execute the statement: return(lapply(X,FUN,...)).
> > That attempt is generating the error message because whatever you are
> > passing in as the FUN argument is not expecting extra arguments.
> >
> > HTH,
> > Eric
> >
> >
> > On Sun, Mar 4, 2018 at 6:52 PM, Christofer Bogaso
> > <[hidden email]> wrote:
> >>
> >> @Eric - with this approach I am getting below error :
> >>
> >> Error in FUN(X[[i]], ...) : unused argument (list())
> >>
> >> On Sun, Mar 4, 2018 at 10:18 PM, Eric Berger <[hidden email]>
> >> wrote:
> >> > Hi Christofer,
> >> > You cannot assign to list(...). You can do the following
> >> >
> >> > myList <- list(...)[!names(list(...)) %in% 'mc.cores']
> >> >
> >> > HTH,
> >> > Eric
> >> >
> >> > On Sun, Mar 4, 2018 at 6:38 PM, Christofer Bogaso
> >> > <[hidden email]> wrote:
> >> >>
> >> >> Hi,
> >> >>
> >> >> As an example, I want to create below kind of custom Function which
> >> >> either be mclapply pr lapply
> >> >>
> >> >> Lapply_me = function(X = X, FUN = FUN, ..., Apply_MC = FALSE) {
> >> >> if (Apply_MC) {
> >> >> return(mclapply(X, FUN, ...))
> >> >> } else {
> >> >> if (any(names(list(...)) == 'mc.cores')) {
> >> >> list(...) = list(...)[!names(list(...)) %in% 'mc.cores']
> >> >> }
> >> >> return(lapply(X, FUN, ...))
> >> >> }
> >> >> }
> >> >>
> >> >> However when Apply_MC = FALSE it generates below error saying :
> >> >>
> >> >>   '...' used in an incorrect context
> >> >>
> >> >>
> >> >> Appreciate if you can help me with the correct approach. Thanks,
> >> >>
> >> >>
> >> >> On Sun, Mar 4, 2018 at 9:34 PM, Duncan Murdoch
> >> >> <[hidden email]>
> >> >> wrote:
> >> >> > On 04/03/2018 10:39 AM, Christofer Bogaso wrote:
> >> >> >>
> >> >> >> Hi again,
> >> >> >>
> >> >> >> I am looking for some way to alternately use 2 related functions,
> >> >> >> based on some ifelse() condition.
> >> >> >>
> >> >> >> For example, I have 2 functions mclapply() and lapply()
> >> >> >>
> >> >> >> However, mclapply() function has one extra parameter 'mc.cores'
> >> >> >> which
> >> >> >> lapply doesnt not have.
> >> >> >>
> >> >> >> I know when mc.cores = 1, these 2 functions are essentially same,
> >> >> >> however I am looking for more general way to control them within
> >> >> >> ifelse() constion
> >> >> >>
> >> >> >> Can someone please help me how can I use them within ifelse()
> >> >> >> condition.
> >> >> >
> >> >> >
> >> >> > Don't.  ifelse() usually evaluates *both* the true and false
> values,
> >> >> > and
> >> >> > then selects entries from each.  Just use an if statement.
> >> >> >
> >> >> > Duncan Murdoch
> >> >>
> >> >> ______________________________________________
> >> >> [hidden email] mailing list -- To UNSUBSCRIBE and more, see
> >> >> 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]]

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
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.
Reply | Threaded
Open this post in threaded view
|

Re: Change Function based on ifelse() condtion

Bogaso
Below is my full implementation (tried to make it simple as for demonstration)

Lapply_me = function(X = X, FUN = FUN, Apply_MC = FALSE, ...) {
if (Apply_MC) {
return(mclapply(X, FUN, ...))
} else {
if (any(names(list(...)) == 'mc.cores')) {
myList = list(...)[!names(list(...)) %in% 'mc.cores']
}
return(lapply(X, FUN, myList))
}
}


Lapply_me(as.list(1:4), function(xx) {
if (xx == 1) return('a')
if (xx == 2) return('b')
if (xx == 3) return('c')
if (xx == 4) return('d')
}, Apply_MC = FALSE, mc.cores = 2)

Error message :

Error in FUN(X[[i]], ...) : unused argument (list())

Kindly note that, with Apply_MC = TRUE, it is working perfectly.

On Sun, Mar 4, 2018 at 10:45 PM, Eric Berger <[hidden email]> wrote:

> That's fine. The issue is how you called Lapply_me(). What did you pass as
> the argument to FUN?
> And if you did not pass anything that how is FUN declared?
> You have not shown that in your email.
>
>
>
>
> On Sun, Mar 4, 2018 at 7:11 PM, Christofer Bogaso
> <[hidden email]> wrote:
>>
>> My modified function looks below :
>>
>> Lapply_me = function(X = X, FUN = FUN, Apply_MC = FALSE, ...) {
>> if (Apply_MC) {
>> return(mclapply(X, FUN, ...))
>> } else {
>> if (any(names(list(...)) == 'mc.cores')) {
>> myList = list(...)[!names(list(...)) %in% 'mc.cores']
>> }
>> return(lapply(X, FUN, myList))
>> }
>> }
>>
>> Here, I am not passing ... anymore rather passing myList
>>
>> On Sun, Mar 4, 2018 at 10:37 PM, Eric Berger <[hidden email]>
>> wrote:
>> > Hi Christofer,
>> > Before you made the change that I suggested, your program was stopping
>> > at
>> > the statement: list(...) = list(..) .etc
>> > This means that it never tried to execute the statement:
>> > return(lapply(X,FUN,...))
>> > Now that you have made the change, it gets past the first statement and
>> > tries to execute the statement: return(lapply(X,FUN,...)).
>> > That attempt is generating the error message because whatever you are
>> > passing in as the FUN argument is not expecting extra arguments.
>> >
>> > HTH,
>> > Eric
>> >
>> >
>> > On Sun, Mar 4, 2018 at 6:52 PM, Christofer Bogaso
>> > <[hidden email]> wrote:
>> >>
>> >> @Eric - with this approach I am getting below error :
>> >>
>> >> Error in FUN(X[[i]], ...) : unused argument (list())
>> >>
>> >> On Sun, Mar 4, 2018 at 10:18 PM, Eric Berger <[hidden email]>
>> >> wrote:
>> >> > Hi Christofer,
>> >> > You cannot assign to list(...). You can do the following
>> >> >
>> >> > myList <- list(...)[!names(list(...)) %in% 'mc.cores']
>> >> >
>> >> > HTH,
>> >> > Eric
>> >> >
>> >> > On Sun, Mar 4, 2018 at 6:38 PM, Christofer Bogaso
>> >> > <[hidden email]> wrote:
>> >> >>
>> >> >> Hi,
>> >> >>
>> >> >> As an example, I want to create below kind of custom Function which
>> >> >> either be mclapply pr lapply
>> >> >>
>> >> >> Lapply_me = function(X = X, FUN = FUN, ..., Apply_MC = FALSE) {
>> >> >> if (Apply_MC) {
>> >> >> return(mclapply(X, FUN, ...))
>> >> >> } else {
>> >> >> if (any(names(list(...)) == 'mc.cores')) {
>> >> >> list(...) = list(...)[!names(list(...)) %in% 'mc.cores']
>> >> >> }
>> >> >> return(lapply(X, FUN, ...))
>> >> >> }
>> >> >> }
>> >> >>
>> >> >> However when Apply_MC = FALSE it generates below error saying :
>> >> >>
>> >> >>   '...' used in an incorrect context
>> >> >>
>> >> >>
>> >> >> Appreciate if you can help me with the correct approach. Thanks,
>> >> >>
>> >> >>
>> >> >> On Sun, Mar 4, 2018 at 9:34 PM, Duncan Murdoch
>> >> >> <[hidden email]>
>> >> >> wrote:
>> >> >> > On 04/03/2018 10:39 AM, Christofer Bogaso wrote:
>> >> >> >>
>> >> >> >> Hi again,
>> >> >> >>
>> >> >> >> I am looking for some way to alternately use 2 related functions,
>> >> >> >> based on some ifelse() condition.
>> >> >> >>
>> >> >> >> For example, I have 2 functions mclapply() and lapply()
>> >> >> >>
>> >> >> >> However, mclapply() function has one extra parameter 'mc.cores'
>> >> >> >> which
>> >> >> >> lapply doesnt not have.
>> >> >> >>
>> >> >> >> I know when mc.cores = 1, these 2 functions are essentially same,
>> >> >> >> however I am looking for more general way to control them within
>> >> >> >> ifelse() constion
>> >> >> >>
>> >> >> >> Can someone please help me how can I use them within ifelse()
>> >> >> >> condition.
>> >> >> >
>> >> >> >
>> >> >> > Don't.  ifelse() usually evaluates *both* the true and false
>> >> >> > values,
>> >> >> > and
>> >> >> > then selects entries from each.  Just use an if statement.
>> >> >> >
>> >> >> > Duncan Murdoch
>> >> >>
>> >> >> ______________________________________________
>> >> >> [hidden email] mailing list -- To UNSUBSCRIBE and more, see
>> >> >> 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.
>> >> >
>> >> >
>> >
>> >
>
>

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
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.
Reply | Threaded
Open this post in threaded view
|

Re: Change Function based on ifelse() condtion

Eric Berger
The reason that it works for Apply_MC=TRUE is that in that case you call
mclapply(X,FUN,...) and
the mclapply() function strips off the mc.cores argument from the "..."
list before calling FUN, so FUN is being called with zero arguments,
exactly as it is declared.

A quick workaround is to change the line

Lapply_me(as.list(1:4), function(xx) {

to

Lapply_me(as.list(1:4), function(xx,dummyList) {

HTH,
Eric


On Sun, Mar 4, 2018 at 7:21 PM, Christofer Bogaso <
[hidden email]> wrote:

> Below is my full implementation (tried to make it simple as for
> demonstration)
>
> Lapply_me = function(X = X, FUN = FUN, Apply_MC = FALSE, ...) {
> if (Apply_MC) {
> return(mclapply(X, FUN, ...))
> } else {
> if (any(names(list(...)) == 'mc.cores')) {
> myList = list(...)[!names(list(...)) %in% 'mc.cores']
> }
> return(lapply(X, FUN, myList))
> }
> }
>
>
> Lapply_me(as.list(1:4), function(xx) {
> if (xx == 1) return('a')
> if (xx == 2) return('b')
> if (xx == 3) return('c')
> if (xx == 4) return('d')
> }, Apply_MC = FALSE, mc.cores = 2)
>
> Error message :
>
> Error in FUN(X[[i]], ...) : unused argument (list())
>
> Kindly note that, with Apply_MC = TRUE, it is working perfectly.
>
> On Sun, Mar 4, 2018 at 10:45 PM, Eric Berger <[hidden email]>
> wrote:
> > That's fine. The issue is how you called Lapply_me(). What did you pass
> as
> > the argument to FUN?
> > And if you did not pass anything that how is FUN declared?
> > You have not shown that in your email.
> >
> >
> >
> >
> > On Sun, Mar 4, 2018 at 7:11 PM, Christofer Bogaso
> > <[hidden email]> wrote:
> >>
> >> My modified function looks below :
> >>
> >> Lapply_me = function(X = X, FUN = FUN, Apply_MC = FALSE, ...) {
> >> if (Apply_MC) {
> >> return(mclapply(X, FUN, ...))
> >> } else {
> >> if (any(names(list(...)) == 'mc.cores')) {
> >> myList = list(...)[!names(list(...)) %in% 'mc.cores']
> >> }
> >> return(lapply(X, FUN, myList))
> >> }
> >> }
> >>
> >> Here, I am not passing ... anymore rather passing myList
> >>
> >> On Sun, Mar 4, 2018 at 10:37 PM, Eric Berger <[hidden email]>
> >> wrote:
> >> > Hi Christofer,
> >> > Before you made the change that I suggested, your program was stopping
> >> > at
> >> > the statement: list(...) = list(..) .etc
> >> > This means that it never tried to execute the statement:
> >> > return(lapply(X,FUN,...))
> >> > Now that you have made the change, it gets past the first statement
> and
> >> > tries to execute the statement: return(lapply(X,FUN,...)).
> >> > That attempt is generating the error message because whatever you are
> >> > passing in as the FUN argument is not expecting extra arguments.
> >> >
> >> > HTH,
> >> > Eric
> >> >
> >> >
> >> > On Sun, Mar 4, 2018 at 6:52 PM, Christofer Bogaso
> >> > <[hidden email]> wrote:
> >> >>
> >> >> @Eric - with this approach I am getting below error :
> >> >>
> >> >> Error in FUN(X[[i]], ...) : unused argument (list())
> >> >>
> >> >> On Sun, Mar 4, 2018 at 10:18 PM, Eric Berger <[hidden email]>
> >> >> wrote:
> >> >> > Hi Christofer,
> >> >> > You cannot assign to list(...). You can do the following
> >> >> >
> >> >> > myList <- list(...)[!names(list(...)) %in% 'mc.cores']
> >> >> >
> >> >> > HTH,
> >> >> > Eric
> >> >> >
> >> >> > On Sun, Mar 4, 2018 at 6:38 PM, Christofer Bogaso
> >> >> > <[hidden email]> wrote:
> >> >> >>
> >> >> >> Hi,
> >> >> >>
> >> >> >> As an example, I want to create below kind of custom Function
> which
> >> >> >> either be mclapply pr lapply
> >> >> >>
> >> >> >> Lapply_me = function(X = X, FUN = FUN, ..., Apply_MC = FALSE) {
> >> >> >> if (Apply_MC) {
> >> >> >> return(mclapply(X, FUN, ...))
> >> >> >> } else {
> >> >> >> if (any(names(list(...)) == 'mc.cores')) {
> >> >> >> list(...) = list(...)[!names(list(...)) %in% 'mc.cores']
> >> >> >> }
> >> >> >> return(lapply(X, FUN, ...))
> >> >> >> }
> >> >> >> }
> >> >> >>
> >> >> >> However when Apply_MC = FALSE it generates below error saying :
> >> >> >>
> >> >> >>   '...' used in an incorrect context
> >> >> >>
> >> >> >>
> >> >> >> Appreciate if you can help me with the correct approach. Thanks,
> >> >> >>
> >> >> >>
> >> >> >> On Sun, Mar 4, 2018 at 9:34 PM, Duncan Murdoch
> >> >> >> <[hidden email]>
> >> >> >> wrote:
> >> >> >> > On 04/03/2018 10:39 AM, Christofer Bogaso wrote:
> >> >> >> >>
> >> >> >> >> Hi again,
> >> >> >> >>
> >> >> >> >> I am looking for some way to alternately use 2 related
> functions,
> >> >> >> >> based on some ifelse() condition.
> >> >> >> >>
> >> >> >> >> For example, I have 2 functions mclapply() and lapply()
> >> >> >> >>
> >> >> >> >> However, mclapply() function has one extra parameter 'mc.cores'
> >> >> >> >> which
> >> >> >> >> lapply doesnt not have.
> >> >> >> >>
> >> >> >> >> I know when mc.cores = 1, these 2 functions are essentially
> same,
> >> >> >> >> however I am looking for more general way to control them
> within
> >> >> >> >> ifelse() constion
> >> >> >> >>
> >> >> >> >> Can someone please help me how can I use them within ifelse()
> >> >> >> >> condition.
> >> >> >> >
> >> >> >> >
> >> >> >> > Don't.  ifelse() usually evaluates *both* the true and false
> >> >> >> > values,
> >> >> >> > and
> >> >> >> > then selects entries from each.  Just use an if statement.
> >> >> >> >
> >> >> >> > Duncan Murdoch
> >> >> >>
> >> >> >> ______________________________________________
> >> >> >> [hidden email] mailing list -- To UNSUBSCRIBE and more, see
> >> >> >> 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]]

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
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.
Reply | Threaded
Open this post in threaded view
|

Re: Change Function based on ifelse() condtion

Bogaso
Thanks Eric, this is working.

On Sun, Mar 4, 2018 at 11:28 PM, Eric Berger <[hidden email]> wrote:

> The reason that it works for Apply_MC=TRUE is that in that case you call
> mclapply(X,FUN,...) and
> the mclapply() function strips off the mc.cores argument from the "..." list
> before calling FUN, so FUN is being called with zero arguments, exactly as
> it is declared.
>
> A quick workaround is to change the line
>
> Lapply_me(as.list(1:4), function(xx) {
>
> to
>
> Lapply_me(as.list(1:4), function(xx,dummyList) {
>
> HTH,
> Eric
>
>
> On Sun, Mar 4, 2018 at 7:21 PM, Christofer Bogaso
> <[hidden email]> wrote:
>>
>> Below is my full implementation (tried to make it simple as for
>> demonstration)
>>
>> Lapply_me = function(X = X, FUN = FUN, Apply_MC = FALSE, ...) {
>> if (Apply_MC) {
>> return(mclapply(X, FUN, ...))
>> } else {
>> if (any(names(list(...)) == 'mc.cores')) {
>> myList = list(...)[!names(list(...)) %in% 'mc.cores']
>> }
>> return(lapply(X, FUN, myList))
>> }
>> }
>>
>>
>> Lapply_me(as.list(1:4), function(xx) {
>> if (xx == 1) return('a')
>> if (xx == 2) return('b')
>> if (xx == 3) return('c')
>> if (xx == 4) return('d')
>> }, Apply_MC = FALSE, mc.cores = 2)
>>
>> Error message :
>>
>> Error in FUN(X[[i]], ...) : unused argument (list())
>>
>> Kindly note that, with Apply_MC = TRUE, it is working perfectly.
>>
>> On Sun, Mar 4, 2018 at 10:45 PM, Eric Berger <[hidden email]>
>> wrote:
>> > That's fine. The issue is how you called Lapply_me(). What did you pass
>> > as
>> > the argument to FUN?
>> > And if you did not pass anything that how is FUN declared?
>> > You have not shown that in your email.
>> >
>> >
>> >
>> >
>> > On Sun, Mar 4, 2018 at 7:11 PM, Christofer Bogaso
>> > <[hidden email]> wrote:
>> >>
>> >> My modified function looks below :
>> >>
>> >> Lapply_me = function(X = X, FUN = FUN, Apply_MC = FALSE, ...) {
>> >> if (Apply_MC) {
>> >> return(mclapply(X, FUN, ...))
>> >> } else {
>> >> if (any(names(list(...)) == 'mc.cores')) {
>> >> myList = list(...)[!names(list(...)) %in% 'mc.cores']
>> >> }
>> >> return(lapply(X, FUN, myList))
>> >> }
>> >> }
>> >>
>> >> Here, I am not passing ... anymore rather passing myList
>> >>
>> >> On Sun, Mar 4, 2018 at 10:37 PM, Eric Berger <[hidden email]>
>> >> wrote:
>> >> > Hi Christofer,
>> >> > Before you made the change that I suggested, your program was
>> >> > stopping
>> >> > at
>> >> > the statement: list(...) = list(..) .etc
>> >> > This means that it never tried to execute the statement:
>> >> > return(lapply(X,FUN,...))
>> >> > Now that you have made the change, it gets past the first statement
>> >> > and
>> >> > tries to execute the statement: return(lapply(X,FUN,...)).
>> >> > That attempt is generating the error message because whatever you are
>> >> > passing in as the FUN argument is not expecting extra arguments.
>> >> >
>> >> > HTH,
>> >> > Eric
>> >> >
>> >> >
>> >> > On Sun, Mar 4, 2018 at 6:52 PM, Christofer Bogaso
>> >> > <[hidden email]> wrote:
>> >> >>
>> >> >> @Eric - with this approach I am getting below error :
>> >> >>
>> >> >> Error in FUN(X[[i]], ...) : unused argument (list())
>> >> >>
>> >> >> On Sun, Mar 4, 2018 at 10:18 PM, Eric Berger <[hidden email]>
>> >> >> wrote:
>> >> >> > Hi Christofer,
>> >> >> > You cannot assign to list(...). You can do the following
>> >> >> >
>> >> >> > myList <- list(...)[!names(list(...)) %in% 'mc.cores']
>> >> >> >
>> >> >> > HTH,
>> >> >> > Eric
>> >> >> >
>> >> >> > On Sun, Mar 4, 2018 at 6:38 PM, Christofer Bogaso
>> >> >> > <[hidden email]> wrote:
>> >> >> >>
>> >> >> >> Hi,
>> >> >> >>
>> >> >> >> As an example, I want to create below kind of custom Function
>> >> >> >> which
>> >> >> >> either be mclapply pr lapply
>> >> >> >>
>> >> >> >> Lapply_me = function(X = X, FUN = FUN, ..., Apply_MC = FALSE) {
>> >> >> >> if (Apply_MC) {
>> >> >> >> return(mclapply(X, FUN, ...))
>> >> >> >> } else {
>> >> >> >> if (any(names(list(...)) == 'mc.cores')) {
>> >> >> >> list(...) = list(...)[!names(list(...)) %in% 'mc.cores']
>> >> >> >> }
>> >> >> >> return(lapply(X, FUN, ...))
>> >> >> >> }
>> >> >> >> }
>> >> >> >>
>> >> >> >> However when Apply_MC = FALSE it generates below error saying :
>> >> >> >>
>> >> >> >>   '...' used in an incorrect context
>> >> >> >>
>> >> >> >>
>> >> >> >> Appreciate if you can help me with the correct approach. Thanks,
>> >> >> >>
>> >> >> >>
>> >> >> >> On Sun, Mar 4, 2018 at 9:34 PM, Duncan Murdoch
>> >> >> >> <[hidden email]>
>> >> >> >> wrote:
>> >> >> >> > On 04/03/2018 10:39 AM, Christofer Bogaso wrote:
>> >> >> >> >>
>> >> >> >> >> Hi again,
>> >> >> >> >>
>> >> >> >> >> I am looking for some way to alternately use 2 related
>> >> >> >> >> functions,
>> >> >> >> >> based on some ifelse() condition.
>> >> >> >> >>
>> >> >> >> >> For example, I have 2 functions mclapply() and lapply()
>> >> >> >> >>
>> >> >> >> >> However, mclapply() function has one extra parameter
>> >> >> >> >> 'mc.cores'
>> >> >> >> >> which
>> >> >> >> >> lapply doesnt not have.
>> >> >> >> >>
>> >> >> >> >> I know when mc.cores = 1, these 2 functions are essentially
>> >> >> >> >> same,
>> >> >> >> >> however I am looking for more general way to control them
>> >> >> >> >> within
>> >> >> >> >> ifelse() constion
>> >> >> >> >>
>> >> >> >> >> Can someone please help me how can I use them within ifelse()
>> >> >> >> >> condition.
>> >> >> >> >
>> >> >> >> >
>> >> >> >> > Don't.  ifelse() usually evaluates *both* the true and false
>> >> >> >> > values,
>> >> >> >> > and
>> >> >> >> > then selects entries from each.  Just use an if statement.
>> >> >> >> >
>> >> >> >> > Duncan Murdoch
>> >> >> >>
>> >> >> >> ______________________________________________
>> >> >> >> [hidden email] mailing list -- To UNSUBSCRIBE and more, see
>> >> >> >> 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.
>> >> >> >
>> >> >> >
>> >> >
>> >> >
>> >
>> >
>
>

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
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.
Reply | Threaded
Open this post in threaded view
|

Re: Change Function based on ifelse() condtion

Bert Gunter-2
In reply to this post by Eric Berger
... and note also:

> f <- function(...)list(...) <- list(...)  ## you cannot have list(...) on
LHS

> f(x=1,y="a")
Error in list(...) <- list(...) : '...' used in an incorrect context


In addition to Eric's suggestions, maybe something like this construction
is useful:

Lapply_me = function(X = X, FUN = FUN, ..., Apply_MC = FALSE) {
   if (Apply_MC) {
      return(mclapply(X, FUN, ...))
   } else {
      if (any(names(list(...)) == 'mc.cores')) {
         l = list(...)[!names(list(...)) %in% 'mc.cores']
      }
      return(do.call(lapply,c(list(X,FUN),l)))
   }
}

> Lapply_me (X=1:5,FUN=sum,mc.cores=4)
[[1]]
[1] 1

[[2]]
[1] 2

[[3]]
[1] 3

[[4]]
[1] 4

[[5]]
[1] 5

Though the program logic needs fixing: if none of the names in list(...)
are "mc.cores," l is undefined!

Cheers,
Bert



Bert Gunter

"The trouble with having an open mind is that people keep coming along and
sticking things into it."
-- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )

On Sun, Mar 4, 2018 at 9:58 AM, Eric Berger <[hidden email]> wrote:

> The reason that it works for Apply_MC=TRUE is that in that case you call
> mclapply(X,FUN,...) and
> the mclapply() function strips off the mc.cores argument from the "..."
> list before calling FUN, so FUN is being called with zero arguments,
> exactly as it is declared.
>
> A quick workaround is to change the line
>
> Lapply_me(as.list(1:4), function(xx) {
>
> to
>
> Lapply_me(as.list(1:4), function(xx,dummyList) {
>
> HTH,
> Eric
>
>
> On Sun, Mar 4, 2018 at 7:21 PM, Christofer Bogaso <
> [hidden email]> wrote:
>
> > Below is my full implementation (tried to make it simple as for
> > demonstration)
> >
> > Lapply_me = function(X = X, FUN = FUN, Apply_MC = FALSE, ...) {
> > if (Apply_MC) {
> > return(mclapply(X, FUN, ...))
> > } else {
> > if (any(names(list(...)) == 'mc.cores')) {
> > myList = list(...)[!names(list(...)) %in% 'mc.cores']
> > }
> > return(lapply(X, FUN, myList))
> > }
> > }
> >
> >
> > Lapply_me(as.list(1:4), function(xx) {
> > if (xx == 1) return('a')
> > if (xx == 2) return('b')
> > if (xx == 3) return('c')
> > if (xx == 4) return('d')
> > }, Apply_MC = FALSE, mc.cores = 2)
> >
> > Error message :
> >
> > Error in FUN(X[[i]], ...) : unused argument (list())
> >
> > Kindly note that, with Apply_MC = TRUE, it is working perfectly.
> >
> > On Sun, Mar 4, 2018 at 10:45 PM, Eric Berger <[hidden email]>
> > wrote:
> > > That's fine. The issue is how you called Lapply_me(). What did you pass
> > as
> > > the argument to FUN?
> > > And if you did not pass anything that how is FUN declared?
> > > You have not shown that in your email.
> > >
> > >
> > >
> > >
> > > On Sun, Mar 4, 2018 at 7:11 PM, Christofer Bogaso
> > > <[hidden email]> wrote:
> > >>
> > >> My modified function looks below :
> > >>
> > >> Lapply_me = function(X = X, FUN = FUN, Apply_MC = FALSE, ...) {
> > >> if (Apply_MC) {
> > >> return(mclapply(X, FUN, ...))
> > >> } else {
> > >> if (any(names(list(...)) == 'mc.cores')) {
> > >> myList = list(...)[!names(list(...)) %in% 'mc.cores']
> > >> }
> > >> return(lapply(X, FUN, myList))
> > >> }
> > >> }
> > >>
> > >> Here, I am not passing ... anymore rather passing myList
> > >>
> > >> On Sun, Mar 4, 2018 at 10:37 PM, Eric Berger <[hidden email]>
> > >> wrote:
> > >> > Hi Christofer,
> > >> > Before you made the change that I suggested, your program was
> stopping
> > >> > at
> > >> > the statement: list(...) = list(..) .etc
> > >> > This means that it never tried to execute the statement:
> > >> > return(lapply(X,FUN,...))
> > >> > Now that you have made the change, it gets past the first statement
> > and
> > >> > tries to execute the statement: return(lapply(X,FUN,...)).
> > >> > That attempt is generating the error message because whatever you
> are
> > >> > passing in as the FUN argument is not expecting extra arguments.
> > >> >
> > >> > HTH,
> > >> > Eric
> > >> >
> > >> >
> > >> > On Sun, Mar 4, 2018 at 6:52 PM, Christofer Bogaso
> > >> > <[hidden email]> wrote:
> > >> >>
> > >> >> @Eric - with this approach I am getting below error :
> > >> >>
> > >> >> Error in FUN(X[[i]], ...) : unused argument (list())
> > >> >>
> > >> >> On Sun, Mar 4, 2018 at 10:18 PM, Eric Berger <
> [hidden email]>
> > >> >> wrote:
> > >> >> > Hi Christofer,
> > >> >> > You cannot assign to list(...). You can do the following
> > >> >> >
> > >> >> > myList <- list(...)[!names(list(...)) %in% 'mc.cores']
> > >> >> >
> > >> >> > HTH,
> > >> >> > Eric
> > >> >> >
> > >> >> > On Sun, Mar 4, 2018 at 6:38 PM, Christofer Bogaso
> > >> >> > <[hidden email]> wrote:
> > >> >> >>
> > >> >> >> Hi,
> > >> >> >>
> > >> >> >> As an example, I want to create below kind of custom Function
> > which
> > >> >> >> either be mclapply pr lapply
> > >> >> >>
> > >> >> >> Lapply_me = function(X = X, FUN = FUN, ..., Apply_MC = FALSE) {
> > >> >> >> if (Apply_MC) {
> > >> >> >> return(mclapply(X, FUN, ...))
> > >> >> >> } else {
> > >> >> >> if (any(names(list(...)) == 'mc.cores')) {
> > >> >> >> list(...) = list(...)[!names(list(...)) %in% 'mc.cores']
> > >> >> >> }
> > >> >> >> return(lapply(X, FUN, ...))
> > >> >> >> }
> > >> >> >> }
> > >> >> >>
> > >> >> >> However when Apply_MC = FALSE it generates below error saying :
> > >> >> >>
> > >> >> >>   '...' used in an incorrect context
> > >> >> >>
> > >> >> >>
> > >> >> >> Appreciate if you can help me with the correct approach. Thanks,
> > >> >> >>
> > >> >> >>
> > >> >> >> On Sun, Mar 4, 2018 at 9:34 PM, Duncan Murdoch
> > >> >> >> <[hidden email]>
> > >> >> >> wrote:
> > >> >> >> > On 04/03/2018 10:39 AM, Christofer Bogaso wrote:
> > >> >> >> >>
> > >> >> >> >> Hi again,
> > >> >> >> >>
> > >> >> >> >> I am looking for some way to alternately use 2 related
> > functions,
> > >> >> >> >> based on some ifelse() condition.
> > >> >> >> >>
> > >> >> >> >> For example, I have 2 functions mclapply() and lapply()
> > >> >> >> >>
> > >> >> >> >> However, mclapply() function has one extra parameter
> 'mc.cores'
> > >> >> >> >> which
> > >> >> >> >> lapply doesnt not have.
> > >> >> >> >>
> > >> >> >> >> I know when mc.cores = 1, these 2 functions are essentially
> > same,
> > >> >> >> >> however I am looking for more general way to control them
> > within
> > >> >> >> >> ifelse() constion
> > >> >> >> >>
> > >> >> >> >> Can someone please help me how can I use them within ifelse()
> > >> >> >> >> condition.
> > >> >> >> >
> > >> >> >> >
> > >> >> >> > Don't.  ifelse() usually evaluates *both* the true and false
> > >> >> >> > values,
> > >> >> >> > and
> > >> >> >> > then selects entries from each.  Just use an if statement.
> > >> >> >> >
> > >> >> >> > Duncan Murdoch
> > >> >> >>
> > >> >> >> ______________________________________________
> > >> >> >> [hidden email] mailing list -- To UNSUBSCRIBE and more,
> see
> > >> >> >> 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]]
>
> ______________________________________________
> [hidden email] mailing list -- To UNSUBSCRIBE and more, see
> 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]]

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
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.