Skip to content

issue with .local() hack used in S4 methods

1 message · Hervé Pagès

#
Hi,

Just ran across this:

 ??? foo <- function(x, ..., z=22) z

 ??? setMethod("foo", "character", function(x, y=-5, z=22) y)
 ??? # Creating a generic function from function ?foo? in the global 
environment

Then:

 ??? foo("a")
 ??? # [1] 22

Should return -5, not 22.

That's because the call to .local() used internally by the foo() method 
does not name the arguments placed after the ellipsis:
Method Definition:

function (x, ..., z = 22)
{
 ??? .local <- function (x, y = 5, z = 22)
 ??? y
 ??? .local(x, ..., z)? <--- should be .local(x, ..., z=z)
}

Thanks,

H.
R version 4.3.0 (2023-04-21)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 23.04

Matrix products: default
BLAS:?? /home/hpages/R/R-4.3.0/lib/libRblas.so
LAPACK: /home/hpages/R/R-4.3.0/lib/libRlapack.so;? LAPACK version 3.11.0

locale:
 ?[1] LC_CTYPE=en_US.UTF-8?????? LC_NUMERIC=C
 ?[3] LC_TIME=en_US.UTF-8??????? LC_COLLATE=en_US.UTF-8
 ?[5] LC_MONETARY=en_US.UTF-8??? LC_MESSAGES=en_US.UTF-8
 ?[7] LC_PAPER=en_US.UTF-8?????? LC_NAME=C
 ?[9] LC_ADDRESS=C?????????????? LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

time zone: America/Los_Angeles
tzcode source: system (glibc)

attached base packages:
[1] stats???? graphics? grDevices utils???? datasets? methods base

loaded via a namespace (and not attached):
[1] compiler_4.3.0?? codetools_0.2-19