[R] more errors (behavior)
     (Ted Harding) 
    ted.harding at wlandres.net
       
    Sun Oct 24 22:25:33 CEST 2010
    
    
  
On 24-Oct-10 19:55:12, ivo welch wrote:
> quick programming question.  I am not making enough errors in my
> programs, so I want to trigger a few more.  ;-)
> 
> [1] undefined variable behavior:
> 
>> d=data.frame( x=rnorm(1:10), y=rnorm(1:10))
>> z
> Error: object 'z' not found
>> d$z NULL
> 
> is this consistent? I thought that z is the same as .GlobalEnv$z,
> but apparently it is not. something here is smart enough to trigger
> an error. I like this error behavior. is it possible to set an R
> global option that triggers the same 'not found' error when an
> undefined element of a list or data frame is accessed?
> 
> [just trying to check all my function arguments, and right now,
> I think I need to include for each argument
> 'stopifnot(is.null(argument))'.  This clutters the code.]
I'm not expert enough to answer your query properly, but I see
it as an example of the somewhat bewildering variety of ways
in which indexing can be represented in R. With your definition:
  .GlobalEnv$d
returns exactly the same as if you had entered simply 'd'.
  .GlobalEnv$z
returns NULL, while simply 'z' returns "Error: object 'z' not found"
as you observed.
  d$y
returns a vector consisting of the values of y (printed
"horizontally), as also does d[[2]], while
  d[2]
returns a column of the values of y.
  str(d[2])
  # 'data.frame':   10 obs. of  1 variable:
  # $ y: num  0.331 0.57 -0.266 -0.694 -0.992 ...
  d[[2]]
returns a vector ("horizontal") exactly like d$y.
Now for d$z etc:
  d$z
  # NULL
  d[3]
  # Error in `[.data.frame`(d, 3) : undefined columns selected
  d[[3]]
  Error in .subset2(x, i, exact = exact) : subscript out of bounds
> [2] is it possible to turn off recycling for vector operations?  (I
> may have asked this at some point already, but I can't find the
> answer.)
> 
>> a=c(2,3)
>> b=c(4,5,6,7)
>> a+b
> [1]  6  8  8 10
> 
> when I really want recycling, I would rather do it explicitly with rep.
> regards,
> /iaw
> ----
But, in such a case, what would you intend a+b to mean?
Ted.
--------------------------------------------------------------------
E-Mail: (Ted Harding) <ted.harding at wlandres.net>
Fax-to-email: +44 (0)870 094 0861
Date: 24-Oct-10                                       Time: 21:25:29
------------------------------ XFMail ------------------------------
    
    
More information about the R-help
mailing list