[R] Testing for arguments in a function
David Winsemius
dwinsemius at comcast.net
Tue Sep 27 02:49:04 CEST 2011
On Sep 26, 2011, at 8:04 PM, Duncan Murdoch wrote:
> 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?
Sorry for the confusion. Even before my wine with dinner I was under
the impression that I had entered
myfun(vec) # and gotten 10.
When I look back, I see I was mistaken. So now I standing alongside
Leynes. I thought R would find "i" and he thought it wouldn't. You are
saying R "doesn't care" andthat should continue on it merry way. Why
doesn't R look for "i"?
--
David.
> 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
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list