Re: [Rd] can we override "if" in R?

2017-03-05 Thread Hadley Wickham
On Sun, Mar 5, 2017 at 8:13 PM, Gábor Csárdi  wrote:
> Because the S3 class system is very informal. E.g. if you happen to
> have an `if.whatever` function, that will be automatically a method of
> your generic.

For example:

x <- structure(1:10, class = "test")
t(x)
#>
#>  One Sample t-test
#>
#> data:  x
#> t = 5.7446, df = 9, p-value = 0.0002782
#> alternative hypothesis: true mean is not equal to 0
#> 95 percent confidence interval:
#>  3.334149 7.665851
#> sample estimates:
#> mean of x
#>   5.5


-- 
http://hadley.nz

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Re: [Rd] can we override "if" in R?

2017-03-05 Thread Michael Lawrence
On Sat, Mar 4, 2017 at 12:36 PM, Da Zheng  wrote:

> In my case, I create a new type of matrices and override matrix
> operations in R for these matrices.
> My goal is to make the system as transparent as possible, which means
> my system should execute the existing R code without modification.
> The problem is that when data is in my own vectors or matrices, "if"
> or "while" can't access their values unless we explicitly convert them
> into R objects. But this means users need to modify the existing code.
> So I hope I can override "if", "while", etc to access data in my own
> vectors and matrices directly.
> Does this sound reasonable?
>
>
Would you really need the alternate representation for scalar logicals?

I can see a case in the deferred evaluation context, although it would be
problematic wrt side effects unless the deferral is complete.




> Best,
> Da
>
> On Sat, Mar 4, 2017 at 3:22 PM, Michael Lawrence
>  wrote:
> > I'm curious as to precisely why someone would want to do this.
> >
> > On Sat, Mar 4, 2017 at 11:49 AM, Da Zheng  wrote:
> >>
> >> I'm just curious. Why making "if" generic is even more dangerous?
> >>
> >> Best,
> >> Da
> >>
> >> On Sat, Mar 4, 2017 at 1:22 PM, Gábor Csárdi 
> >> wrote:
> >> > `!` is a generic, `if` is not. You can define an `if` that is generic,
> >> > but this might be even more dangerous
> >> >
> >> > ❯ `if` <- function(a, b, c) UseMethod("if")
> >> > ❯ `if.default` <- function(a,b,c) base::`if`(a, b, c)
> >> > ❯ `if.foo` <- function(a, b, c) FALSE
> >> > ❯ a <- structure(42, class = "foo")
> >> >
> >> > ❯ if (a) TRUE else FALSE
> >> > [1] FALSE
> >> >
> >> > ❯ if (1) TRUE else FALSE
> >> > [1] TRUE
> >> >
> >> > Gabor
> >> >
> >> > On Sat, Mar 4, 2017 at 5:47 PM, Da Zheng 
> wrote:
> >> >> Thanks.
> >> >> Can I override it for a specific class?
> >> >> I can do that for operators such as "!". For example, "!.fm" works
> for
> >> >> objects of the class "fm".
> >> >> It seems I can't do the same for "if".
> >> >>
> >> >> Best,
> >> >> Da
> >> >>
> >> >> On Sat, Mar 4, 2017 at 12:41 PM, Gábor Csárdi <
> csardi.ga...@gmail.com>
> >> >> wrote:
> >> >>> You can. Perhaps needless to say, be careful with this.
> >> >>>
> >> >>> ❯ `if` <- function(...) FALSE
> >> >>> ❯ if (TRUE) TRUE else FALSE
> >> >>> [1] FALSE
> >> >>>
> >> >>> G.
> >> >>>
> >> >>> On Sat, Mar 4, 2017 at 5:36 PM, Da Zheng 
> >> >>> wrote:
> >>  Hello,
> >> 
> >>  I heard we can override almost everything in R. Is it possible to
> >>  override "if" keyword in R to evaluate my own object instead of a
> >>  logical value?
> >> 
> >>  Thanks,
> >>  Da
> >> 
> >>  __
> >>  R-devel@r-project.org mailing list
> >>  https://stat.ethz.ch/mailman/listinfo/r-devel
> >>
> >> __
> >> R-devel@r-project.org mailing list
> >> https://stat.ethz.ch/mailman/listinfo/r-devel
> >
> >
>

[[alternative HTML version deleted]]

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Re: [Rd] can we override "if" in R?

2017-03-05 Thread Da Zheng
On Sun, Mar 5, 2017 at 2:50 PM, Michael Lawrence
 wrote:
>
>
> On Sat, Mar 4, 2017 at 12:36 PM, Da Zheng  wrote:
>>
>> In my case, I create a new type of matrices and override matrix
>> operations in R for these matrices.
>> My goal is to make the system as transparent as possible, which means
>> my system should execute the existing R code without modification.
>> The problem is that when data is in my own vectors or matrices, "if"
>> or "while" can't access their values unless we explicitly convert them
>> into R objects. But this means users need to modify the existing code.
>> So I hope I can override "if", "while", etc to access data in my own
>> vectors and matrices directly.
>> Does this sound reasonable?
>>
>
> Would you really need the alternate representation for scalar logicals?
>
> I can see a case in the deferred evaluation context, although it would be
> problematic wrt side effects unless the deferral is complete.
This is exactly why I want to use my own matrix objects and redefine
"if" for the matrices. In my framework, all matrices are read-only, so
there isn't side effect.

Best,
Da
>
>
>
>>
>> Best,
>> Da
>>
>> On Sat, Mar 4, 2017 at 3:22 PM, Michael Lawrence
>>  wrote:
>> > I'm curious as to precisely why someone would want to do this.
>> >
>> > On Sat, Mar 4, 2017 at 11:49 AM, Da Zheng  wrote:
>> >>
>> >> I'm just curious. Why making "if" generic is even more dangerous?
>> >>
>> >> Best,
>> >> Da
>> >>
>> >> On Sat, Mar 4, 2017 at 1:22 PM, Gábor Csárdi 
>> >> wrote:
>> >> > `!` is a generic, `if` is not. You can define an `if` that is
>> >> > generic,
>> >> > but this might be even more dangerous
>> >> >
>> >> > ❯ `if` <- function(a, b, c) UseMethod("if")
>> >> > ❯ `if.default` <- function(a,b,c) base::`if`(a, b, c)
>> >> > ❯ `if.foo` <- function(a, b, c) FALSE
>> >> > ❯ a <- structure(42, class = "foo")
>> >> >
>> >> > ❯ if (a) TRUE else FALSE
>> >> > [1] FALSE
>> >> >
>> >> > ❯ if (1) TRUE else FALSE
>> >> > [1] TRUE
>> >> >
>> >> > Gabor
>> >> >
>> >> > On Sat, Mar 4, 2017 at 5:47 PM, Da Zheng 
>> >> > wrote:
>> >> >> Thanks.
>> >> >> Can I override it for a specific class?
>> >> >> I can do that for operators such as "!". For example, "!.fm" works
>> >> >> for
>> >> >> objects of the class "fm".
>> >> >> It seems I can't do the same for "if".
>> >> >>
>> >> >> Best,
>> >> >> Da
>> >> >>
>> >> >> On Sat, Mar 4, 2017 at 12:41 PM, Gábor Csárdi
>> >> >> 
>> >> >> wrote:
>> >> >>> You can. Perhaps needless to say, be careful with this.
>> >> >>>
>> >> >>> ❯ `if` <- function(...) FALSE
>> >> >>> ❯ if (TRUE) TRUE else FALSE
>> >> >>> [1] FALSE
>> >> >>>
>> >> >>> G.
>> >> >>>
>> >> >>> On Sat, Mar 4, 2017 at 5:36 PM, Da Zheng 
>> >> >>> wrote:
>> >>  Hello,
>> >> 
>> >>  I heard we can override almost everything in R. Is it possible to
>> >>  override "if" keyword in R to evaluate my own object instead of a
>> >>  logical value?
>> >> 
>> >>  Thanks,
>> >>  Da
>> >> 
>> >>  __
>> >>  R-devel@r-project.org mailing list
>> >>  https://stat.ethz.ch/mailman/listinfo/r-devel
>> >>
>> >> __
>> >> R-devel@r-project.org mailing list
>> >> https://stat.ethz.ch/mailman/listinfo/r-devel
>> >
>> >
>
>

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

[Rd] length(unclass(x)) without unclass(x)?

2017-03-05 Thread Henrik Bengtsson
I'm looking for a way to get the length of an object 'x' as given by
base data type without dispatching on class.  Something analogous to
how .subset()/.subset2(), e.g. a .length() function.  I know that I
can do length(unclass(x)), but that will trigger the creation of a new
object unclass(x) which I want to avoid because 'x' might be very
large.

Here's a dummy example illustrating what I'm trying to get to:

> x <- structure(double(1e6), class = c("foo", "numeric"))
> length.foo <- function(x) 1L
> length(x)
[1] 1
> length(unclass(x))
[1] 100

but the latter call will cause an internal memory allocation:

> profmem::profmem(length(unclass(x)))
Rprofmem memory profiling of:
length(unclass(x))

Memory allocations:
bytes  calls
1 840 
total 840

In my use case, I have control over neither the class of 'x' (it can
be any class from any package) nor the implementation of length() for
the class.  I'm not sure, but in the "old old days", I think I could
have called base::length.default(x) to achieve this.  Does anyone know
of a way to infer length(unclass(x)) without going via unclass(x)?  I
prefer to do this with the existing R API and not having to implement
it in native code.

Thanks,

Henrik

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


[Rd] Please add me to bugzilla

2017-03-05 Thread Bradley Broom
Please add me to R bugzilla.

Thanks,
Bradley

[[alternative HTML version deleted]]

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] can we override "if" in R?

2017-03-05 Thread Gabriel Becker
Da,

I've been following this thread and I'm still confused as to exactly what
you want/why you want it.

I'm probably just missing some context here, but, If() doesn't operate on
matrices, generally. Can you give an example of the type of code you want
to have continue to run that requires if operation *directly* on one of
your matrix objects, as opposed, say, to a value pulled out from it, or the
dot-product of two vectors in your system, both of which would be values
(scalars) not matrices.

Now ifelse(), is of course, a different beast altogether, and would need to
be overloaded within your system, I imagine.

Best,
~G

On Sun, Mar 5, 2017 at 12:52 PM, Da Zheng  wrote:

> On Sun, Mar 5, 2017 at 2:50 PM, Michael Lawrence
>  wrote:
> >
> >
> > On Sat, Mar 4, 2017 at 12:36 PM, Da Zheng  wrote:
> >>
> >> In my case, I create a new type of matrices and override matrix
> >> operations in R for these matrices.
> >> My goal is to make the system as transparent as possible, which means
> >> my system should execute the existing R code without modification.
> >> The problem is that when data is in my own vectors or matrices, "if"
> >> or "while" can't access their values unless we explicitly convert them
> >> into R objects. But this means users need to modify the existing code.
> >> So I hope I can override "if", "while", etc to access data in my own
> >> vectors and matrices directly.
> >> Does this sound reasonable?
> >>
> >
> > Would you really need the alternate representation for scalar logicals?
> >
> > I can see a case in the deferred evaluation context, although it would be
> > problematic wrt side effects unless the deferral is complete.
> This is exactly why I want to use my own matrix objects and redefine
> "if" for the matrices. In my framework, all matrices are read-only, so
> there isn't side effect.
>
> Best,
> Da
> >
> >
> >
> >>
> >> Best,
> >> Da
> >>
> >> On Sat, Mar 4, 2017 at 3:22 PM, Michael Lawrence
> >>  wrote:
> >> > I'm curious as to precisely why someone would want to do this.
> >> >
> >> > On Sat, Mar 4, 2017 at 11:49 AM, Da Zheng 
> wrote:
> >> >>
> >> >> I'm just curious. Why making "if" generic is even more dangerous?
> >> >>
> >> >> Best,
> >> >> Da
> >> >>
> >> >> On Sat, Mar 4, 2017 at 1:22 PM, Gábor Csárdi  >
> >> >> wrote:
> >> >> > `!` is a generic, `if` is not. You can define an `if` that is
> >> >> > generic,
> >> >> > but this might be even more dangerous
> >> >> >
> >> >> > ❯ `if` <- function(a, b, c) UseMethod("if")
> >> >> > ❯ `if.default` <- function(a,b,c) base::`if`(a, b, c)
> >> >> > ❯ `if.foo` <- function(a, b, c) FALSE
> >> >> > ❯ a <- structure(42, class = "foo")
> >> >> >
> >> >> > ❯ if (a) TRUE else FALSE
> >> >> > [1] FALSE
> >> >> >
> >> >> > ❯ if (1) TRUE else FALSE
> >> >> > [1] TRUE
> >> >> >
> >> >> > Gabor
> >> >> >
> >> >> > On Sat, Mar 4, 2017 at 5:47 PM, Da Zheng 
> >> >> > wrote:
> >> >> >> Thanks.
> >> >> >> Can I override it for a specific class?
> >> >> >> I can do that for operators such as "!". For example, "!.fm" works
> >> >> >> for
> >> >> >> objects of the class "fm".
> >> >> >> It seems I can't do the same for "if".
> >> >> >>
> >> >> >> Best,
> >> >> >> Da
> >> >> >>
> >> >> >> On Sat, Mar 4, 2017 at 12:41 PM, Gábor Csárdi
> >> >> >> 
> >> >> >> wrote:
> >> >> >>> You can. Perhaps needless to say, be careful with this.
> >> >> >>>
> >> >> >>> ❯ `if` <- function(...) FALSE
> >> >> >>> ❯ if (TRUE) TRUE else FALSE
> >> >> >>> [1] FALSE
> >> >> >>>
> >> >> >>> G.
> >> >> >>>
> >> >> >>> On Sat, Mar 4, 2017 at 5:36 PM, Da Zheng 
> >> >> >>> wrote:
> >> >>  Hello,
> >> >> 
> >> >>  I heard we can override almost everything in R. Is it possible
> to
> >> >>  override "if" keyword in R to evaluate my own object instead of
> a
> >> >>  logical value?
> >> >> 
> >> >>  Thanks,
> >> >>  Da
> >> >> 
> >> >>  __
> >> >>  R-devel@r-project.org mailing list
> >> >>  https://stat.ethz.ch/mailman/listinfo/r-devel
> >> >>
> >> >> __
> >> >> R-devel@r-project.org mailing list
> >> >> https://stat.ethz.ch/mailman/listinfo/r-devel
> >> >
> >> >
> >
> >
>
> __
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



-- 
Gabriel Becker, PhD
Associate Scientist (Bioinformatics)
Genentech Research

[[alternative HTML version deleted]]

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Re: [Rd] can we override "if" in R?

2017-03-05 Thread William Dunlap via R-devel
Da Zheng would like to override 'if' and 'while' to accept more than
scalar logicals and Martin Maechler would like to change 'if' to
accept only scalar logicals.  No one has mentioned '||' and '&&',
which also want scalar logicals.

Perhaps a solution is to have all of these call a new generic
function, as.scalar.logical() on their relevant arguments.  (For
efficiency, the default would be internally dispatched).

Bill Dunlap
TIBCO Software
wdunlap tibco.com


On Sun, Mar 5, 2017 at 4:43 PM, Gabriel Becker  wrote:
> Da,
>
> I've been following this thread and I'm still confused as to exactly what
> you want/why you want it.
>
> I'm probably just missing some context here, but, If() doesn't operate on
> matrices, generally. Can you give an example of the type of code you want
> to have continue to run that requires if operation *directly* on one of
> your matrix objects, as opposed, say, to a value pulled out from it, or the
> dot-product of two vectors in your system, both of which would be values
> (scalars) not matrices.
>
> Now ifelse(), is of course, a different beast altogether, and would need to
> be overloaded within your system, I imagine.
>
> Best,
> ~G
>
> On Sun, Mar 5, 2017 at 12:52 PM, Da Zheng  wrote:
>
>> On Sun, Mar 5, 2017 at 2:50 PM, Michael Lawrence
>>  wrote:
>> >
>> >
>> > On Sat, Mar 4, 2017 at 12:36 PM, Da Zheng  wrote:
>> >>
>> >> In my case, I create a new type of matrices and override matrix
>> >> operations in R for these matrices.
>> >> My goal is to make the system as transparent as possible, which means
>> >> my system should execute the existing R code without modification.
>> >> The problem is that when data is in my own vectors or matrices, "if"
>> >> or "while" can't access their values unless we explicitly convert them
>> >> into R objects. But this means users need to modify the existing code.
>> >> So I hope I can override "if", "while", etc to access data in my own
>> >> vectors and matrices directly.
>> >> Does this sound reasonable?
>> >>
>> >
>> > Would you really need the alternate representation for scalar logicals?
>> >
>> > I can see a case in the deferred evaluation context, although it would be
>> > problematic wrt side effects unless the deferral is complete.
>> This is exactly why I want to use my own matrix objects and redefine
>> "if" for the matrices. In my framework, all matrices are read-only, so
>> there isn't side effect.
>>
>> Best,
>> Da
>> >
>> >
>> >
>> >>
>> >> Best,
>> >> Da
>> >>
>> >> On Sat, Mar 4, 2017 at 3:22 PM, Michael Lawrence
>> >>  wrote:
>> >> > I'm curious as to precisely why someone would want to do this.
>> >> >
>> >> > On Sat, Mar 4, 2017 at 11:49 AM, Da Zheng 
>> wrote:
>> >> >>
>> >> >> I'm just curious. Why making "if" generic is even more dangerous?
>> >> >>
>> >> >> Best,
>> >> >> Da
>> >> >>
>> >> >> On Sat, Mar 4, 2017 at 1:22 PM, Gábor Csárdi > >
>> >> >> wrote:
>> >> >> > `!` is a generic, `if` is not. You can define an `if` that is
>> >> >> > generic,
>> >> >> > but this might be even more dangerous
>> >> >> >
>> >> >> > ❯ `if` <- function(a, b, c) UseMethod("if")
>> >> >> > ❯ `if.default` <- function(a,b,c) base::`if`(a, b, c)
>> >> >> > ❯ `if.foo` <- function(a, b, c) FALSE
>> >> >> > ❯ a <- structure(42, class = "foo")
>> >> >> >
>> >> >> > ❯ if (a) TRUE else FALSE
>> >> >> > [1] FALSE
>> >> >> >
>> >> >> > ❯ if (1) TRUE else FALSE
>> >> >> > [1] TRUE
>> >> >> >
>> >> >> > Gabor
>> >> >> >
>> >> >> > On Sat, Mar 4, 2017 at 5:47 PM, Da Zheng 
>> >> >> > wrote:
>> >> >> >> Thanks.
>> >> >> >> Can I override it for a specific class?
>> >> >> >> I can do that for operators such as "!". For example, "!.fm" works
>> >> >> >> for
>> >> >> >> objects of the class "fm".
>> >> >> >> It seems I can't do the same for "if".
>> >> >> >>
>> >> >> >> Best,
>> >> >> >> Da
>> >> >> >>
>> >> >> >> On Sat, Mar 4, 2017 at 12:41 PM, Gábor Csárdi
>> >> >> >> 
>> >> >> >> wrote:
>> >> >> >>> You can. Perhaps needless to say, be careful with this.
>> >> >> >>>
>> >> >> >>> ❯ `if` <- function(...) FALSE
>> >> >> >>> ❯ if (TRUE) TRUE else FALSE
>> >> >> >>> [1] FALSE
>> >> >> >>>
>> >> >> >>> G.
>> >> >> >>>
>> >> >> >>> On Sat, Mar 4, 2017 at 5:36 PM, Da Zheng 
>> >> >> >>> wrote:
>> >> >>  Hello,
>> >> >> 
>> >> >>  I heard we can override almost everything in R. Is it possible
>> to
>> >> >>  override "if" keyword in R to evaluate my own object instead of
>> a
>> >> >>  logical value?
>> >> >> 
>> >> >>  Thanks,
>> >> >>  Da
>> >> >> 
>> >> >>  __
>> >> >>  R-devel@r-project.org mailing list
>> >> >>  https://stat.ethz.ch/mailman/listinfo/r-devel
>> >> >>
>> >> >> __
>> >> >> R-devel@r-project.org mailing list
>> >> >> https://stat.ethz.ch/mailman/listinfo/r-devel
>> >> >
>> >> >
>> >
>> >
>>
>> __
>> R-devel@r-project.org mailing list
>> https://stat.ethz.ch/

Re: [Rd] can we override "if" in R?

2017-03-05 Thread Mark.Bravington
I can't comment for Da, but one example where the ability to make 'if' generic 
would have been desirable:

A couple of years ago I wrote S3 classes and methods for 1-byte integers and 
logicals stored as raw vectors, in order to handle massive amounts of genetic 
data (by the standards of the day). Everything worked pretty nicely, ie I could 
"methodize" just about everything I needed--- except if-statements, which would 
fail to respect eg my definitions of NA. [ The precise details elude me, but 
if() was untrustworthy. ]  To use 'if()',  I had to remember to "typecast", 
which was prone to "user error".

Whether this kind of thing is worth the "risk", is another matter. 

cheers
Mark

Mark Bravington
CSIRO Marine Lab
Hobart
Australia


From: R-devel [r-devel-boun...@r-project.org] on behalf of Gabriel Becker 
[gmbec...@ucdavis.edu]
Sent: 06 March 2017 11:43
To: Da Zheng
Cc: r-devel@r-project.org
Subject: Re: [Rd] can we override "if" in R?

Da,

I've been following this thread and I'm still confused as to exactly what
you want/why you want it.

I'm probably just missing some context here, but, If() doesn't operate on
matrices, generally. Can you give an example of the type of code you want
to have continue to run that requires if operation *directly* on one of
your matrix objects, as opposed, say, to a value pulled out from it, or the
dot-product of two vectors in your system, both of which would be values
(scalars) not matrices.

Now ifelse(), is of course, a different beast altogether, and would need to
be overloaded within your system, I imagine.

Best,
~G

On Sun, Mar 5, 2017 at 12:52 PM, Da Zheng  wrote:

> On Sun, Mar 5, 2017 at 2:50 PM, Michael Lawrence
>  wrote:
> >
> >
> > On Sat, Mar 4, 2017 at 12:36 PM, Da Zheng  wrote:
> >>
> >> In my case, I create a new type of matrices and override matrix
> >> operations in R for these matrices.
> >> My goal is to make the system as transparent as possible, which means
> >> my system should execute the existing R code without modification.
> >> The problem is that when data is in my own vectors or matrices, "if"
> >> or "while" can't access their values unless we explicitly convert them
> >> into R objects. But this means users need to modify the existing code.
> >> So I hope I can override "if", "while", etc to access data in my own
> >> vectors and matrices directly.
> >> Does this sound reasonable?
> >>
> >
> > Would you really need the alternate representation for scalar logicals?
> >
> > I can see a case in the deferred evaluation context, although it would be
> > problematic wrt side effects unless the deferral is complete.
> This is exactly why I want to use my own matrix objects and redefine
> "if" for the matrices. In my framework, all matrices are read-only, so
> there isn't side effect.
>
> Best,
> Da
> >
> >
> >
> >>
> >> Best,
> >> Da
> >>
> >> On Sat, Mar 4, 2017 at 3:22 PM, Michael Lawrence
> >>  wrote:
> >> > I'm curious as to precisely why someone would want to do this.
> >> >
> >> > On Sat, Mar 4, 2017 at 11:49 AM, Da Zheng 
> wrote:
> >> >>
> >> >> I'm just curious. Why making "if" generic is even more dangerous?
> >> >>
> >> >> Best,
> >> >> Da
> >> >>
> >> >> On Sat, Mar 4, 2017 at 1:22 PM, Gábor Csárdi  >
> >> >> wrote:
> >> >> > `!` is a generic, `if` is not. You can define an `if` that is
> >> >> > generic,
> >> >> > but this might be even more dangerous
> >> >> >
> >> >> > ❯ `if` <- function(a, b, c) UseMethod("if")
> >> >> > ❯ `if.default` <- function(a,b,c) base::`if`(a, b, c)
> >> >> > ❯ `if.foo` <- function(a, b, c) FALSE
> >> >> > ❯ a <- structure(42, class = "foo")
> >> >> >
> >> >> > ❯ if (a) TRUE else FALSE
> >> >> > [1] FALSE
> >> >> >
> >> >> > ❯ if (1) TRUE else FALSE
> >> >> > [1] TRUE
> >> >> >
> >> >> > Gabor
> >> >> >
> >> >> > On Sat, Mar 4, 2017 at 5:47 PM, Da Zheng 
> >> >> > wrote:
> >> >> >> Thanks.
> >> >> >> Can I override it for a specific class?
> >> >> >> I can do that for operators such as "!". For example, "!.fm" works
> >> >> >> for
> >> >> >> objects of the class "fm".
> >> >> >> It seems I can't do the same for "if".
> >> >> >>
> >> >> >> Best,
> >> >> >> Da
> >> >> >>
> >> >> >> On Sat, Mar 4, 2017 at 12:41 PM, Gábor Csárdi
> >> >> >> 
> >> >> >> wrote:
> >> >> >>> You can. Perhaps needless to say, be careful with this.
> >> >> >>>
> >> >> >>> ❯ `if` <- function(...) FALSE
> >> >> >>> ❯ if (TRUE) TRUE else FALSE
> >> >> >>> [1] FALSE
> >> >> >>>
> >> >> >>> G.
> >> >> >>>
> >> >> >>> On Sat, Mar 4, 2017 at 5:36 PM, Da Zheng 
> >> >> >>> wrote:
> >> >>  Hello,
> >> >> 
> >> >>  I heard we can override almost everything in R. Is it possible
> to
> >> >>  override "if" keyword in R to evaluate my own object instead of
> a
> >> >>  logical value?
> >> >> 
> >> >>  Thanks,
> >> >>  Da
> >> >> 
> >> >>  __
> >> >>  R-devel@r-project.org mailing list
> >> >>  https://stat.