Does this mirror the functionality in Rif.jl? I don’t know enough about the 
subtleties of the two packages, but it seems like there are multiple efforts 
towards calling R, and it would be great to combine them somehow.

https://github.com/lgautier/Rif.jl
https://github.com/lgautier/Rif.jl/issues/41

-viral



> On 06-Jan-2015, at 3:20 am, Douglas Bates <[email protected]> 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 <[email protected]> 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?
> 
> 

Reply via email to