G'day Greg,

On Thu, 18 May 2023 08:57:55 -0600
Greg Snow <538...@gmail.com> wrote:

[...]
> `fun(x <- expr)`  Assigns the value of `expr` to the variable `x` in
> the frame/environment that `fun` is called from.

Only if the argument 'x' is evaluated during the function call AFAIK.
If it is not, due to lazy evaluation rules, then no assignment takes
place. 

> When you run the code with `<-` it, then the ith element of the global
> variable `sexsnp` is assigned the p-value.  When you run the version
> with `=` then R tries to find an argument to `tryCatch` that matches
> (possibly partially) `sexsnp[i]` and gives the error because it does
> not find a match (not sure why it is not handled by `...`, but
> tryCatch may be parsed special, or non-legal argument names on the RHS
> of `-` may be checked).

After exact matching on names comes partial matching on names and then
positional matching.  If after these three rounds there are still
actual arguments left over, they are assigned to "..." (if it exist as
formal argument).

So under the usual rules of how actual arguments
are passed to formal arguments in Federico's call the argument
"sexsnp[i] = fisher.test(table(data[,3], data[,i + 38]))$p" should be
assigned to the formal argument "expr" of tryCatch() and "error =
function(e) print(NA))" should be absorbed by "...".

But it seems, as "=" has a different meaning in function call, the
expression passed to the "expr" formal argument is not allowed to
contain a "=".  Not sure why. :-)

I guess that the intended use is actually:

R> for(i in 1:1750){sexsnp[i] = tryCatch(fisher.test(table(data[,3], data[,i + 
38]))$p, error = function(e) print(NA))}

I.e. tryCatch() returns the result of the evaluated expression (if
successful, otherwise the result of an error handler) and that result
can be assigned.  It is not expected the that expression contains an
assignment operation.  But I am just guessing. :)

Cheers,

        Berwin

______________________________________________
R-help@r-project.org 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 via email to