dear members, I am using the RSelenium package which uses the function selenium() from the wdman package. The selenium function contains the function java_check at line 12. If I try to run it, it throws an error:> javapath <- java_check()Error in java_check() : could not find function "java_check" Also:> exists("java_check")[1] FALSE But when I run selenium(), it works fine.... How do you explain this conundrum? You can refer to this link: https://github.com/ropensci/wdman/issues/15 Specifically what concept of R explains this weird behaviour? Thanking you, Yours sincerely, AKSHAY M KULKARNI [[alternative HTML version deleted]]
Look into R's scoping rules. E.g., https://bookdown.org/rdpeng/rprogdatascience/scoping-rules-of-r.html. * When a function looks up a name, it looks it up in the environment in which the function was defined. * Functions in a package are generally defined in the package's environment (although sometimes they are in a descendent of the parent's environment). * When one searches an environment for a name, if it is not found in the environment the search continues in the parent environment of that environment, recursively until the parent environment is the empty environment.> with(environment(wdman::selenium), java_check)function () { javapath <- Sys.which("java") if (identical(unname(javapath), "")) { stop("PATH to JAVA not found. Please check JAVA is installed.") } javapath } <bytecode: 0x000001fd0ab826a8> <environment: namespace:wdman> -Bill On Thu, Jan 19, 2023 at 2:28 PM akshay kulkarni <akshay_e4 at hotmail.com> wrote:> dear members, > I am using the RSelenium package which uses > the function selenium() from the wdman package. The selenium function > contains the function java_check at line 12. If I try to run it, it throws > an error: > > > javapath <- java_check() > Error in java_check() : could not find function "java_check" > > Also: > > > exists("java_check") > [1] FALSE > > But when I run selenium(), it works fine.... > > How do you explain this conundrum? You can refer to this link: > https://github.com/ropensci/wdman/issues/15 > > Specifically what concept of R explains this weird behaviour? > > Thanking you, > Yours sincerely, > AKSHAY M KULKARNI > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at 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]]
A little simpler answer than the others. Look at package Namespaces. When a package is created, the NAMESPACE file defines which functions in the package are exported (i.e. available for you to use), the other functions are "private" to the package meaning that other functions in the package can call those functions, but they are not meant to be called directly by the user. So in your case, the `selenium` function was exported, but `java_check` was not exported. The function does exist, but R's regular search rules do not find it when you try to call it directly (but because it shares the Namespace with selenium, it is found when called there). It is possible to call non-exported functions (use something like RSelenium:::java_check()), but non-exported functions are not usually documented and subject to change without any warning. You are using the functionality in a way different from how the author intended, so there are no guarantees that it will do what you think it should. On Thu, Jan 19, 2023 at 3:28 PM akshay kulkarni <akshay_e4 at hotmail.com> wrote:> > dear members, > I am using the RSelenium package which uses the function selenium() from the wdman package. The selenium function contains the function java_check at line 12. If I try to run it, it throws an error: > > > javapath <- java_check() > Error in java_check() : could not find function "java_check" > > Also: > > > exists("java_check") > [1] FALSE > > But when I run selenium(), it works fine.... > > How do you explain this conundrum? You can refer to this link: https://github.com/ropensci/wdman/issues/15 > > Specifically what concept of R explains this weird behaviour? > > Thanking you, > Yours sincerely, > AKSHAY M KULKARNI > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at 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.-- Gregory (Greg) L. Snow Ph.D. 538280 at gmail.com