Nvm, I forgot to export bar from the outer module; doing that, using works just as well as import, and you don't need to fully qualify (exported) names in the outer module, just as usual.
// T On Tuesday, January 6, 2015 1:31:12 AM UTC+1, Tomas Lycken wrote: > > The following works for me: > > module RCall > > module R > > import ..RCall > > export foo > > function foo() > RCall.bar() > end > > end # R > > export R > > function bar() > println("hello, handsome!") > end > > end > > Now, I can do > > using RCall > R.foo() > "hello, handsome!" > > I didn’t manage to get it working with using instead of import in the > inner module, though, but that only affects your own usage of your own > code, so I think that’s a minor issue. > > // T > > On Monday, January 5, 2015 10:50:04 PM UTC+1, Douglas Bates wrote: > > The (unregistered) [RCall](https://github.com/JuliaStats/RCall.jl) >> package is an initial cut at the interface. I am not happy with all the >> names that I chose and welcome suggestions of improvements. For some >> reason I was unable to create an R module within the RCall module, as >> Stefan suggested. Again, I welcome suggestions of how to accomplish this. >> My particular difficulty is that if I create an R module within the RCall >> module I don't see the names from RCall. >> >> >> On Saturday, January 3, 2015 12:56:48 PM UTC-6, lgautier wrote: >>> >>> I agree. >>> RCall does provide consistency, although at the possible slight cost of >>> boring conformity, and seems a better choice than RStats. >>> >>> On Saturday, January 3, 2015 8:31:42 AM UTC-5, Viral Shah wrote: >>>> >>>> I prefer Rcall.jl, for consistency with ccall, PyCall, JavaCall, etc. >>>> Also, once in JuliaStats, it will probably also be well advertised and >>>> documented - so finding it should not be a challenge, IMO. >>>> >>>> -viral >>>> >>>> On Saturday, January 3, 2015 10:16:51 AM UTC+5:30, Ismael VC wrote: >>>>> >>>>> +1 for RStats.jl, I also think it's more search-friendly but not only >>>>> for people coming from R. >>>>> >>>>> On Fri, Jan 2, 2015 at 9:50 PM, Gray Calhoun <gcal...@iastate.edu> >>>>> wrote: >>>>> >>>>>> That sounds great! Rcall.jl or RCall.jl are fine names; RStats.jl may >>>>>> be slightly more search-friendly for people coming from R, since they >>>>>> may >>>>>> not know about PyCall. >>>>>> >>>>>> >>>>>> On Friday, January 2, 2015 1:59:04 PM UTC-6, Douglas Bates wrote: >>>>>>> >>>>>>> For many statistics-oriented Julia users there is a great advantage >>>>>>> in being able to piggy-back on R development and to use at least the >>>>>>> data >>>>>>> sets from R packages. Hence the RDatasets package and the read_rda >>>>>>> function in the DataFrames package for reading saved R data. >>>>>>> >>>>>>> Over the last couple of days I have been experimenting with running >>>>>>> an embedded R within Julia and calling R functions from Julia. This is >>>>>>> similar in scope to the Rif package except that this code is written in >>>>>>> Julia and not as a set of wrapper functions written in C. The R API is >>>>>>> a C >>>>>>> API and, in some ways, very simple. Everything in R is represented as a >>>>>>> "symbolic expression" or SEXPREC and passed around as pointers to such >>>>>>> expressions (called an SEXP type). Most functions take one or more >>>>>>> SEXP >>>>>>> values as arguments and return an SEXP. >>>>>>> >>>>>>> I have avoided reading the code for Rif for two reasons: >>>>>>> 1. It is GPL3 licensed >>>>>>> 2. I already know a fair bit of the R API and where to find API >>>>>>> function signatures. >>>>>>> >>>>>>> Here's a simple example >>>>>>> julia> initR() >>>>>>> 1 >>>>>>> >>>>>>> julia> globalEnv = unsafe_load(cglobal((:R_GlobalEnv,libR),SEXP),1) >>>>>>> Ptr{Void} @0x0000000008c1c388 >>>>>>> >>>>>>> julia> formaldehyde = tryEval(install(:Formaldehyde)) >>>>>>> Ptr{Void} @0x0000000008fd1d18 >>>>>>> >>>>>>> julia> inherits(formaldehyde,"data.frame") >>>>>>> true >>>>>>> >>>>>>> julia> printValue(formaldehyde) >>>>>>> carb optden >>>>>>> 1 0.1 0.086 >>>>>>> 2 0.3 0.269 >>>>>>> 3 0.5 0.446 >>>>>>> 4 0.6 0.538 >>>>>>> 5 0.7 0.626 >>>>>>> 6 0.9 0.782 >>>>>>> >>>>>>> julia> length(formaldehyde) >>>>>>> 2 >>>>>>> >>>>>>> julia> names(formaldehyde) >>>>>>> 2-element Array{ASCIIString,1}: >>>>>>> "carb" >>>>>>> "optden" >>>>>>> >>>>>>> julia> form1 = ccall((:VECTOR_ELT,libR),SEXP, >>>>>>> (SEXP,Cint),formaldehyde,0) >>>>>>> Ptr{Void} @0x000000000a5baf58 >>>>>>> >>>>>>> julia> ccall((:TYPEOF,libR),Cint,(SEXP,),form1) >>>>>>> 14 >>>>>>> >>>>>>> julia> carb = copy(pointer_to_array(ccall((: >>>>>>> REAL,libR),Ptr{Cdouble},(SEXP,),form1),length(form1))) >>>>>>> 6-element Array{Float64,1}: >>>>>>> 0.1 >>>>>>> 0.3 >>>>>>> 0.5 >>>>>>> 0.6 >>>>>>> 0.7 >>>>>>> 0.9 >>>>>>> >>>>>>> julia> form2 = ccall((:VECTOR_ELT,libR),SEXP, >>>>>>> (SEXP,Cint),formaldehyde,1) >>>>>>> Ptr{Void} @0x000000000a5baef0 >>>>>>> >>>>>>> julia> ccall((:TYPEOF,libR),Cint,(SEXP,),form2) >>>>>>> 14 >>>>>>> >>>>>>> julia> optden = copy(pointer_to_array(ccall((: >>>>>>> REAL,libR),Ptr{Cdouble},(SEXP,),form2),length(form2))) >>>>>>> 6-element Array{Float64,1}: >>>>>>> 0.086 >>>>>>> 0.269 >>>>>>> 0.446 >>>>>>> 0.538 >>>>>>> 0.626 >>>>>>> 0.782 >>>>>>> >>>>>>> >>>>>>> A call to printValue uses the R printing mechanism. >>>>>>> >>>>>>> Questions: >>>>>>> - What would be a good name for such a package? In the spirit of >>>>>>> PyCall it could be RCall or Rcall perhaps. >>>>>>> >>>>>>> - Right now I am defining several functions that emulate the names >>>>>>> of functions in R itself ir in the R API. What is a good balance? >>>>>>> Obviously it would not be a good idea to bring in all the names in the >>>>>>> R >>>>>>> base namespace. On the other hand, those who know names like >>>>>>> "inherits" >>>>>>> and what it means in R will find it convenient to have such names in >>>>>>> such a >>>>>>> package. >>>>>>> >>>>>>> - Should I move the discussion the the julia-stats list? >>>>>>> >>>>>>> >>>>> >