[R] Can't reliably use RefClass methods in Snowfall
henry
henry at afpc.tamu.edu
Sat Sep 24 17:55:28 CEST 2011
Greetings,
I am trying to use Reference Class methods in Snowfall, using R 2.12.1
on Ubuntu Natty. Using then directly seems to work (stanza 2 below),
but using them indirectly does not (stanza 3 below). I get an "attempt
to apply non-function" error.
In addition to exporting the instance of the object I created to the
Snowfall slaves, I also made several attempts to export the method
itself (e.g. sfExport("instance$method") or some such), with no
success. Very strangely, if I run Stanza 2 below, then stanza 3 will
work.
I tried emailing the Snowfall author, but have not heard back. Any
help is greatly appreciated!
Henry Bryant
Texas A&M University
library("snowfall")
library("methods")
# set up a simple reference class
calculator <- setRefClass("calculator")
calculator$methods(do_calc = function(x) {print(x*x)})
my_calc <- calculator$new()
wrapper <- function(x) {my_calc$do_calc(x)}
# STANZA 2: use snowfall without wrapper -- WORKING
#sfInit(parallel=TRUE, cpus=2, type="SOCK")
#sfExport("calculator")
#sfExport("my_calc")
#results <- sfLapply(1:10,my_calc$do_calc)
#sfStop()
#print(results)
# STANZA 3: use snowfall with wrapper -- NOT WORKING
# (not working by itself, but does work if the previous stanza is run
first!!)
sfInit(parallel=TRUE, cpus=2, type="SOCK")
sfExport("calculator")
sfExport("my_calc")
sfExport("wrapper")
last_results <- sfLapply(1:10,wrapper)
sfStop()
cat("\nRESULTS FROM SECOND TRY:\n")
print(last_results)
More information about the R-help
mailing list