On 11-09-26 5:15 PM, David Winsemius wrote:

On Sep 26, 2011, at 4:56 PM, Duncan Murdoch wrote:

On 26/09/2011 3:39 PM, Gene Leynes wrote:
I don't understand how this function can subset by i when i is
missing....

## My function:
myfun = function(vec, i){
     ret = vec[i]
     ret
}

## My data:
i = 10
vec = 1:100

## Expected input and behavior:
myfun(vec, i)

## Missing an argument, but error is not caught!
## How is subsetting even possible here???
myfun(vec)

Subsetting allows missing arguments.  What you have is equivalent to
evaluating

vec[]

which is legal.

But I don't think "vec[]" is what he is seeing. At least it's not what
I see. I see 10 coming back. I assumed it was simply because "i" was
not found inside the function so its calling environment was examined
so that vec[10] was returned.


In which R version?  In 2.13.1 patched (from a few weeks ago) I get this:

> ## Expected input and behavior:
> myfun(vec, i)
[1] 10
>
> ## Missing an argument, but error is not caught!
> ## How is subsetting even possible here???
> myfun(vec)
  [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15
 [16]  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30
 [31]  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45
 [46]  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60
 [61]  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75
 [76]  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90
 [91]  91  92  93  94  95  96  97  98  99 100
>

The second set of output is the same as vec[].

Duncan Murdoch

______________________________________________
R-help@r-project.org mailing list
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