[R] Generation of random numbers in a function - (Return command)

From: Vincy Pyne <vincy_pyne_at_yahoo.ca>
Date: Fri, 11 Mar 2011 07:51:16 -0800 (PST)


Dear R helpers

I have following data.frame and for each product_name, I have associated mean and standard deviation. I need to generate 1000 random no.s for each of these products and find the respective mean and standard deviation.
 

My R code is as follows.
 

library(plyr)
library(reshape2)
 

filtered_new <- data.frame(product_name = c("P1", "P2", "P3", "P4", "P5"), output_avg = c(22.71078,22.16979,21.34420,20.17421,19.83799), output_stdev = c(23.59924,21.21430,22.01025,18.88877,18.80436))

n <- 100

myfunction_mc = function(product_name, output_avg, output_stdev)

{

product_usage_borrowing_room_mc = rnorm(n, output_avg, output_stdev)

output_avg_mc =
 mean(product_usage_borrowing_room_mc)
output_stdev_mc = sd(product_usage_borrowing_room_mc)

return(output_avg_mc )

}

result <- dlply(.data = filtered_new, .variables = "product_name", .fun = function(x)
                 myfunction_mc(product_name = x$product_name, output_avg = x$output_avg,
                 output_stdev = x$output_stdev))

result1 <- data.frame(result)

result2 <- melt(result1)

result <- data.frame(product = filtered_new$product_name, Monte_Carlo_result = result2$value)                 

And it gives me the desired result.

######### PROBLEM is as given below -

But if in the "myfunction_mc", in the return statement if I try to add 'output_stdev_mc'  i.e.

myfunction_mc = function(product_name, output_avg, output_stdev)

{

product_usage_borrowing_room_mc = rnorm(n, output_avg, output_stdev)

output_avg_mc = mean(product_usage_borrowing_room_mc) output_stdev_mc = sd(product_usage_borrowing_room_mc)

return(output_avg_mc, output_stdev_mc)            # I have added output_stdev_m

}

result <- dlply(.data = filtered_new, .variables = "product_name", .fun = function(x)
                 myfunction_mc(product_name = x$product_name, output_avg = x$output_avg,
                 output_stdev = x$output_stdev))

I get following error -

Error in return(output_avg_mc, output_stdev_mc) : multi-argument returns are not permitted

Kindly
 guide.

Regards

Vincy

        [[alternative HTML version deleted]]



R-help_at_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. Received on Fri 11 Mar 2011 - 15:57:40 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 11 Mar 2011 - 17:30:20 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive