[R] Change Function based on ifelse() condtion

Christofer Bogaso bogaso.christofer at gmail.com
Sun Mar 4 17:38:56 CET 2018


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 <murdoch.duncan at gmail.com> 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



More information about the R-help mailing list