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.