I would suggest instead: foo <- function(pars){ with(pars, (res <- (x + y)*z^w list(result = res, message = alpha) )) }
On Sun, Dec 12, 2021, 9:12 AM Rui Barradas <ruipbarra...@sapo.pt> wrote: > Hello, > > Inline. > > Às 16:43 de 12/12/21, akshay kulkarni escreveu: > > dear members, > > I am a stock trader based in INDIA using R for > my research. I have two questions: > > > > > > 1. I want to send the same function with different arguments to > different cores. This link in SO > https://stackoverflow.com/questions/25045998/send-function-calls-with-different-arguments-to-different-processors-in-r-using > > 2. gives the following solution: > > > > library(parallel) > > > > cl <- makeCluster(4) > > clusterExport(cl, "foo") > > cores <- seq_along(cl) > > r <- clusterApply(cl[cores], cores, function(core) { > > if (core == 1) { > > foo(5, 4, 1/2, 3, "a") > > } else if (core == 2) { > > foo(5, 3, 1/3, 1, "b") > > } else if (core == 3) { > > foo(5, 4, 1/4, 1, "c") > > } else if (core == 4) { > > foo(5, 2, 1/5, 0, "d") > > }}) > > > > My question is: what is the structure of the output "r" in the above > code? I think it is a list with r[[1]] = output of > foo(5,4,1/2,3,"a"),r[[2]] = output of foo(5,1/3,1,"b") > > > > and so on. AM I right? > > Yes, you are right. Why don't you try and print r[[1]]? > > Anyway, I would put the parameters in a list and pass them to the > function following the below lines. > > > library(parallel) > > foo <- function(pars){ > x <- pars$x > y <- pars$y > z <- pars$z > w <- pars$w > alpha <- pars$alpha > res <- (x + y)*z^w > list(result = res, message = alpha) > } > params <- list( > list(x=5, y=4, z=1/2, w=3, alpha="a"), > list(x=5, y=3, z=1/3, w=1, alpha="b"), > list(x=5, y=4, z=1/4, w=1, alpha="c"), > list(x=5, y=2, z=1/5, w=0, alpha="d") > ) > > cl <- makeCluster(4) > clusterExport(cl, "foo") > clusterExport(cl, "params") > cores <- seq_along(cl) > r <- clusterApply(cl[cores], cores, function(core) { > foo(params[[core]]) > }) > stopCluster(cl) > > do.call(rbind.data.frame, r) > > > Hope this helps, > > Rui Barradas > > > > > > 1. > > > > I am using RSelenium to scrape a website. Javascript has a > document.ready function which ensures that any JS code is run only after > the whole document is > > > > * > > > > loaded. Is there a similar function in RSelenium? Or will the execution > of the next expression takes place only after the whole page is loaded > (with the > > > > * > > > > "navigate" method of RSelenium)? > > > > Thanking you, > > > > Yours sincerely, > > > > AKSHAY M KULKARNI > > > > > > > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > > 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. > > > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.