trinker / wakefield

Generate random data sets
256 stars 28 forks source link

don't inhibit errors in user supplied generators #9

Open vspinu opened 8 years ago

vspinu commented 8 years ago

Currently all user errors are swallowed by try blocks in r_list:

> r_data_frame(10,
+              id = sample(NULL, 10),
+              answer())
Error in sample(NULL, 10, n = 10) (from r_list.R#71) : unused argument (n = 10)
> 

which is unrelated to the real problem

> sample(NULL, 10)
Error in sample.int(length(x), size, replace, prob) : 
  invalid first argument

BTW, you can eliminate such errors and avoid the substitution of each var_function by having a smart n argument that would automatically pick n from the calling environment:

> var_fun <- function(a = get(".N.", parent.frame(1))){print(a)}
> caller <- function(){ .N. <- 10; var_fun()}
> caller()
[1] 10
trinker commented 8 years ago

@vspinu Definitely a valid point I didn't realize was happening. I agree fully so long as the user's experience isn't changed (or at least not lowered). I don't have a lot of dev time at the moment. A pull request for the fix would be appreciated.