Hello,
This is because args(`[`) returns NULL and class(NULL) is NULL.
So the question would be why is the return value of args(`[`) NULL?
Rui Barradas
Às 15:14 de 07/10/2018, Peter Dalgaard escreveu:
On 7 Oct 2018, at 16:04 , Rui Barradas <ruipbarra...@sapo.pt> wrote:
Hello,
I don't see why you say that the documentation seems to be wrong:
class(args(`+`))
#[1] "function"
args() on a primitive does return a closure. At least in this case it does.
But in this case it doesn't:
is.primitive(get("["))
[1] TRUE
class(args(get("[")))
[1] "NULL"
Or, for that matter:
is.primitive(`[`)
[1] TRUE
class(args(`[`))
[1] "NULL"
-pd
Rui Barradas
Às 14:05 de 07/10/2018, Peter Dalgaard escreveu:
There is more "fun" afoot here, but I don't recall what the point may be:
args(get("+"))
function (e1, e2)
NULL
args(get("["))
NULL
get("[")
.Primitive("[")
get("+")
function (e1, e2) .Primitive("+")
The other index operators, "[[", "[<-", "[[<-" are similar
The docs are pretty clear that args() on a primitive should yield a closure, so
at least the documentation seems to be wrong.
-pd
On 6 Oct 2018, at 19:26 , Laurent Gautier <lgaut...@gmail.com> wrote:
Hi,
A short code example showing the warning might the only thing needed here:
```
formals(args(`[`))
NULL
*Warning message:In formals(fun) : argument is not a function*
is.function(`[`)
[1] TRUE
is.primitive(`[`)
[1] TRUE
```
Now with an other primitive:
```
formals(args(`sum`))
$...
$na.rm
[1] FALSE
is.function(`sum`)
[1] TRUE
is.primitive(`sum`)
[1] TRUE
class(`[`)
[1] "function"
```
Is this a feature ?
Laurent
[[alternative HTML version deleted]]
______________________________________________
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