trinker / wakefield

Generate random data sets
256 stars 28 forks source link

generating 1000 names with replacement using r_data_frame #10

Closed Rdub2 closed 8 years ago

Rdub2 commented 8 years ago

May be problem with passing arguments to r_data_frame.

works

x <- data.frame(name(1000, replace = TRUE))

fails, doesn't pass replace = TRUE.

x <- r_data_frame(1000,name,replace = TRUE) Error in sample.int(length(x), size, replace, prob) : cannot take a sample larger than the population when 'replace = FALSE'

trinker commented 8 years ago

To use arguments to a variable function you need to use parenthesis as in:

x <- r_data_frame(n =1000,
    name(replace = TRUE)
)
trinker commented 8 years ago

I'm closing this feel free to comment. It would help future posters if you let them know if this solved your issue.

Rdub2 commented 7 years ago

Yes, this solved the single variable issue. Thank you. However multiple variables do no work with this syntax. Maybe there is a workaround.

x <- data.frame( name(10000, replace = TRUE), sex(10000, replace = TRUE) )

trinker commented 7 years ago

Why do you need replace = TRUE on the sex variable? Also why are you using data.frame?

Rdub2 commented 7 years ago

started with r_data_frame, but I need sampling with replacement. Name per se not needed, but thats the variable in which I originally encountered the problem. I can work around it, it's just not knowing what parameters to use to consistently cast it to a data frame.

works with N < 1000

r_data_frame( n = 100, name, sex )

trinker commented 7 years ago

I don't understand. What I showed above works as you want I believe... just add new variables to it as follows:

r_data_frame(
    n = 10000,
    name(replace = TRUE),
    sex
)
Rdub2 commented 7 years ago

OK. That works. But, then switching back to no replace, how would you could for error in?:

y <- r_data_frame(

  • n = 10000,
  • name(replace = FALSE),
  • sex
  • ) Error in sample.int(length(x), size, replace, prob) : cannot take a sample larger than the population when 'replace = FALSE'

Works for n<1000

trinker commented 7 years ago

There are only about 1000 names in the vector I select from. If you don't replace and want a sample larger than this it will throw an error. You have two options

  1. use replacement
  2. create your own names function with a vector that contains more names