[julia-users] Re: How to assign names of a RArray object in Rif.jl?

2014-10-26 Thread lgautier
Currently the way to do is to explicitly call the R-level setter:

x = Rif.R("names<-")(x, Rif.cR("A", "B", "C"))


However, as of today commit the C-level is exposed and a way that is 
looking a little more like native Julia.
(I'll do a pull request so this is part of the released package soon).

The unit-tests are for vectors, and should be explict:
https://github.com/lgautier/Rif.jl/blob/master/test/vectors.jl#L57

```julia
# The C API for R has specialized MACRO for names getrnames/setrnames
# exposes it
vi2 = Int32[1,2,3]
rvi2 = Rif.RArray{Int32,1}(vi2)
@test isequal(None, Rif.getrnames(rvi2))
Rif.setrnames!(rvi2, Rif.RArray{ASCIIString,1}(ASCIIString["a", "b", "c"]))
@test isequal("a", Rif.getrnames(rvi2)[1])
@test isequal("b", Rif.getrnames(rvi2)[2])
@test isequal("c", Rif.getrnames(rvi2)[3])

# setAttr/getAttr will be equivalent
vi2 = Int32[1,2,3]
rvi2 = Rif.RArray{Int32,1}(vi2)
@test_throws ErrorException Rif.getAttr(rvi2, "names")
Rif.setAttr!(rvi2, "names",
 Rif.RArray{ASCIIString,1}(ASCIIString["a", "b", "c"]))
@test isequal("a", Rif.getAttr(rvi2, "names")[1])
@test isequal("a", Rif.getrnames(rvi2)[1])
@test isequal("b", Rif.getAttr(rvi2, "names")[2])
@test isequal("b", Rif.getrnames(rvi2)[2])
@test isequal("c", Rif.getAttr(rvi2, "names")[3])
@test isequal("c", Rif.getrnames(rvi2)[3])
```

On Saturday, October 25, 2014 12:38:10 PM UTC-4, xiong...@gmail.com wrote:
>
> In R, we can assign names for a variable as:
> > x<-c(1,2,3)
> > names(x)=c("A","B","C")
> > x
> A B C 
> 1 2 3
>
> In Julia, I can create a RArray by
> x=Rif.cR([1,2,3])
> But anyone know how to assign the "names" to this RArray variable in Julia?
>


[julia-users] Re: How to assign names of a RArray object in Rif.jl?

2014-10-27 Thread David van Leeuwen
Hi, 

There is a package NamedArray that attempts to make it possible to work 
with named indices and dimensions in native Julia arrays, just like you are 
used to in R.  There is no interface to Rif.jl, though.  Would this be a 
useful extension?

---david

On Sunday, October 26, 2014 11:01:51 PM UTC+1, lgautier wrote:
>
> Currently the way to do is to explicitly call the R-level setter:
>
> x = Rif.R("names<-")(x, Rif.cR("A", "B", "C"))
>
>
> However, as of today commit the C-level is exposed and a way that is 
> looking a little more like native Julia.
> (I'll do a pull request so this is part of the released package soon).
>
> The unit-tests are for vectors, and should be explict:
> https://github.com/lgautier/Rif.jl/blob/master/test/vectors.jl#L57
>
> ```julia
> # The C API for R has specialized MACRO for names getrnames/setrnames
> # exposes it
> vi2 = Int32[1,2,3]
> rvi2 = Rif.RArray{Int32,1}(vi2)
> @test isequal(None, Rif.getrnames(rvi2))
> Rif.setrnames!(rvi2, Rif.RArray{ASCIIString,1}(ASCIIString["a", "b", "c"]))
> @test isequal("a", Rif.getrnames(rvi2)[1])
> @test isequal("b", Rif.getrnames(rvi2)[2])
> @test isequal("c", Rif.getrnames(rvi2)[3])
>
> # setAttr/getAttr will be equivalent
> vi2 = Int32[1,2,3]
> rvi2 = Rif.RArray{Int32,1}(vi2)
> @test_throws ErrorException Rif.getAttr(rvi2, "names")
> Rif.setAttr!(rvi2, "names",
>  Rif.RArray{ASCIIString,1}(ASCIIString["a", "b", "c"]))
> @test isequal("a", Rif.getAttr(rvi2, "names")[1])
> @test isequal("a", Rif.getrnames(rvi2)[1])
> @test isequal("b", Rif.getAttr(rvi2, "names")[2])
> @test isequal("b", Rif.getrnames(rvi2)[2])
> @test isequal("c", Rif.getAttr(rvi2, "names")[3])
> @test isequal("c", Rif.getrnames(rvi2)[3])
> ```
>
> On Saturday, October 25, 2014 12:38:10 PM UTC-4, xiong...@gmail.com wrote:
>>
>> In R, we can assign names for a variable as:
>> > x<-c(1,2,3)
>> > names(x)=c("A","B","C")
>> > x
>> A B C 
>> 1 2 3
>>
>> In Julia, I can create a RArray by
>> x=Rif.cR([1,2,3])
>> But anyone know how to assign the "names" to this RArray variable in 
>> Julia?
>>
>

[julia-users] Re: How to assign names of a RArray object in Rif.jl?

2014-10-29 Thread xiongjieyi
I'm afraid the Rif.R("names<-") is not working.

julia> Rif.initr()
Using R_HOME=/home/Mine/programs/Rstat/R-3.1.1
0

julia> Rif.R("names<-")
ERROR: R is not initialized
 in parseR at /home/JXiong/.julia/v0.4/Rif/src/Rif.jl:251
 in R at /home/JXiong/.julia/v0.4/Rif/src/Rif.jl:277



On Sunday, October 26, 2014 11:01:51 PM UTC+1, lgautier wrote:
>
> Currently the way to do is to explicitly call the R-level setter:
>
> x = Rif.R("names<-")(x, Rif.cR("A", "B", "C"))
>
>
> However, as of today commit the C-level is exposed and a way that is 
> looking a little more like native Julia.
> (I'll do a pull request so this is part of the released package soon).
>
> The unit-tests are for vectors, and should be explict:
> https://github.com/lgautier/Rif.jl/blob/master/test/vectors.jl#L57
>
> ```julia
> # The C API for R has specialized MACRO for names getrnames/setrnames
> # exposes it
> vi2 = Int32[1,2,3]
> rvi2 = Rif.RArray{Int32,1}(vi2)
> @test isequal(None, Rif.getrnames(rvi2))
> Rif.setrnames!(rvi2, Rif.RArray{ASCIIString,1}(ASCIIString["a", "b", "c"]))
> @test isequal("a", Rif.getrnames(rvi2)[1])
> @test isequal("b", Rif.getrnames(rvi2)[2])
> @test isequal("c", Rif.getrnames(rvi2)[3])
>
> # setAttr/getAttr will be equivalent
> vi2 = Int32[1,2,3]
> rvi2 = Rif.RArray{Int32,1}(vi2)
> @test_throws ErrorException Rif.getAttr(rvi2, "names")
> Rif.setAttr!(rvi2, "names",
>  Rif.RArray{ASCIIString,1}(ASCIIString["a", "b", "c"]))
> @test isequal("a", Rif.getAttr(rvi2, "names")[1])
> @test isequal("a", Rif.getrnames(rvi2)[1])
> @test isequal("b", Rif.getAttr(rvi2, "names")[2])
> @test isequal("b", Rif.getrnames(rvi2)[2])
> @test isequal("c", Rif.getAttr(rvi2, "names")[3])
> @test isequal("c", Rif.getrnames(rvi2)[3])
> ```
>
> On Saturday, October 25, 2014 12:38:10 PM UTC-4, xiong...@gmail.com wrote:
>>
>> In R, we can assign names for a variable as:
>> > x<-c(1,2,3)
>> > names(x)=c("A","B","C")
>> > x
>> A B C 
>> 1 2 3
>>
>> In Julia, I can create a RArray by
>> x=Rif.cR([1,2,3])
>> But anyone know how to assign the "names" to this RArray variable in 
>> Julia?
>>
>

[julia-users] Re: How to assign names of a RArray object in Rif.jl?

2014-10-29 Thread lgautier
Please open an issue on github. I will look at it. Thanks, L.


[julia-users] Re: How to assign names of a RArray object in Rif.jl?

2014-10-30 Thread lgautier
I turns out that:

1- the error message is wrong (fixed in master)
2- it should be Rif.R("`names<-`")
3- better to open an issue on github than post on the list
4- the alternative (getrnames/setrnames) should now be the in latest 
release of Rif. Just update.



On Wednesday, October 29, 2014 5:15:09 AM UTC-4, xiong...@gmail.com wrote:
>
> I'm afraid the Rif.R("names<-") is not working.
>
> julia> Rif.initr()
> Using R_HOME=/home/Mine/programs/Rstat/R-3.1.1
> 0
>
> julia> Rif.R("names<-")
> ERROR: R is not initialized
>  in parseR at /home/JXiong/.julia/v0.4/Rif/src/Rif.jl:251
>  in R at /home/JXiong/.julia/v0.4/Rif/src/Rif.jl:277
>
>
>
> On Sunday, October 26, 2014 11:01:51 PM UTC+1, lgautier wrote:
>>
>> Currently the way to do is to explicitly call the R-level setter:
>>
>> x = Rif.R("names<-")(x, Rif.cR("A", "B", "C"))
>>
>>
>> However, as of today commit the C-level is exposed and a way that is 
>> looking a little more like native Julia.
>> (I'll do a pull request so this is part of the released package soon).
>>
>> The unit-tests are for vectors, and should be explict:
>> https://github.com/lgautier/Rif.jl/blob/master/test/vectors.jl#L57
>>
>> ```julia
>> # The C API for R has specialized MACRO for names getrnames/setrnames
>> # exposes it
>> vi2 = Int32[1,2,3]
>> rvi2 = Rif.RArray{Int32,1}(vi2)
>> @test isequal(None, Rif.getrnames(rvi2))
>> Rif.setrnames!(rvi2, Rif.RArray{ASCIIString,1}(ASCIIString["a", "b", 
>> "c"]))
>> @test isequal("a", Rif.getrnames(rvi2)[1])
>> @test isequal("b", Rif.getrnames(rvi2)[2])
>> @test isequal("c", Rif.getrnames(rvi2)[3])
>>
>> # setAttr/getAttr will be equivalent
>> vi2 = Int32[1,2,3]
>> rvi2 = Rif.RArray{Int32,1}(vi2)
>> @test_throws ErrorException Rif.getAttr(rvi2, "names")
>> Rif.setAttr!(rvi2, "names",
>>  Rif.RArray{ASCIIString,1}(ASCIIString["a", "b", "c"]))
>> @test isequal("a", Rif.getAttr(rvi2, "names")[1])
>> @test isequal("a", Rif.getrnames(rvi2)[1])
>> @test isequal("b", Rif.getAttr(rvi2, "names")[2])
>> @test isequal("b", Rif.getrnames(rvi2)[2])
>> @test isequal("c", Rif.getAttr(rvi2, "names")[3])
>> @test isequal("c", Rif.getrnames(rvi2)[3])
>> ```
>>
>> On Saturday, October 25, 2014 12:38:10 PM UTC-4, xiong...@gmail.com 
>> wrote:
>>>
>>> In R, we can assign names for a variable as:
>>> > x<-c(1,2,3)
>>> > names(x)=c("A","B","C")
>>> > x
>>> A B C 
>>> 1 2 3
>>>
>>> In Julia, I can create a RArray by
>>> x=Rif.cR([1,2,3])
>>> But anyone know how to assign the "names" to this RArray variable in 
>>> Julia?
>>>
>>

[julia-users] Re: How to assign names of a RArray object in Rif.jl?

2014-10-30 Thread lgautier
I'd be happy to follow the naming convention for generics when handling 
named arrays.

On Monday, October 27, 2014 11:17:47 AM UTC-4, David van Leeuwen wrote:
>
> Hi, 
>
> There is a package NamedArray that attempts to make it possible to work 
> with named indices and dimensions in native Julia arrays, just like you are 
> used to in R.  There is no interface to Rif.jl, though.  Would this be a 
> useful extension?
>
> ---david
>
> On Sunday, October 26, 2014 11:01:51 PM UTC+1, lgautier wrote:
>>
>> Currently the way to do is to explicitly call the R-level setter:
>>
>> x = Rif.R("names<-")(x, Rif.cR("A", "B", "C"))
>>
>>
>> However, as of today commit the C-level is exposed and a way that is 
>> looking a little more like native Julia.
>> (I'll do a pull request so this is part of the released package soon).
>>
>> The unit-tests are for vectors, and should be explict:
>> https://github.com/lgautier/Rif.jl/blob/master/test/vectors.jl#L57
>>
>> ```julia
>> # The C API for R has specialized MACRO for names getrnames/setrnames
>> # exposes it
>> vi2 = Int32[1,2,3]
>> rvi2 = Rif.RArray{Int32,1}(vi2)
>> @test isequal(None, Rif.getrnames(rvi2))
>> Rif.setrnames!(rvi2, Rif.RArray{ASCIIString,1}(ASCIIString["a", "b", 
>> "c"]))
>> @test isequal("a", Rif.getrnames(rvi2)[1])
>> @test isequal("b", Rif.getrnames(rvi2)[2])
>> @test isequal("c", Rif.getrnames(rvi2)[3])
>>
>> # setAttr/getAttr will be equivalent
>> vi2 = Int32[1,2,3]
>> rvi2 = Rif.RArray{Int32,1}(vi2)
>> @test_throws ErrorException Rif.getAttr(rvi2, "names")
>> Rif.setAttr!(rvi2, "names",
>>  Rif.RArray{ASCIIString,1}(ASCIIString["a", "b", "c"]))
>> @test isequal("a", Rif.getAttr(rvi2, "names")[1])
>> @test isequal("a", Rif.getrnames(rvi2)[1])
>> @test isequal("b", Rif.getAttr(rvi2, "names")[2])
>> @test isequal("b", Rif.getrnames(rvi2)[2])
>> @test isequal("c", Rif.getAttr(rvi2, "names")[3])
>> @test isequal("c", Rif.getrnames(rvi2)[3])
>> ```
>>
>> On Saturday, October 25, 2014 12:38:10 PM UTC-4, xiong...@gmail.com 
>> wrote:
>>>
>>> In R, we can assign names for a variable as:
>>> > x<-c(1,2,3)
>>> > names(x)=c("A","B","C")
>>> > x
>>> A B C 
>>> 1 2 3
>>>
>>> In Julia, I can create a RArray by
>>> x=Rif.cR([1,2,3])
>>> But anyone know how to assign the "names" to this RArray variable in 
>>> Julia?
>>>
>>

[julia-users] Re: How to assign names of a RArray object in Rif.jl?

2014-11-05 Thread xiongjieyi
Quite good improvements. Thanks! I like getrnames and setrnames!, That's 
much intuitive!

On Thursday, October 30, 2014 10:44:01 PM UTC+1, lgautier wrote:
>
> I'd be happy to follow the naming convention for generics when handling 
> named arrays.
>
> On Monday, October 27, 2014 11:17:47 AM UTC-4, David van Leeuwen wrote:
>>
>> Hi, 
>>
>> There is a package NamedArray that attempts to make it possible to work 
>> with named indices and dimensions in native Julia arrays, just like you are 
>> used to in R.  There is no interface to Rif.jl, though.  Would this be a 
>> useful extension?
>>
>> ---david
>>
>> On Sunday, October 26, 2014 11:01:51 PM UTC+1, lgautier wrote:
>>>
>>> Currently the way to do is to explicitly call the R-level setter:
>>>
>>> x = Rif.R("names<-")(x, Rif.cR("A", "B", "C"))
>>>
>>>
>>> However, as of today commit the C-level is exposed and a way that is 
>>> looking a little more like native Julia.
>>> (I'll do a pull request so this is part of the released package soon).
>>>
>>> The unit-tests are for vectors, and should be explict:
>>> https://github.com/lgautier/Rif.jl/blob/master/test/vectors.jl#L57
>>>
>>> ```julia
>>> # The C API for R has specialized MACRO for names getrnames/setrnames
>>> # exposes it
>>> vi2 = Int32[1,2,3]
>>> rvi2 = Rif.RArray{Int32,1}(vi2)
>>> @test isequal(None, Rif.getrnames(rvi2))
>>> Rif.setrnames!(rvi2, Rif.RArray{ASCIIString,1}(ASCIIString["a", "b", 
>>> "c"]))
>>> @test isequal("a", Rif.getrnames(rvi2)[1])
>>> @test isequal("b", Rif.getrnames(rvi2)[2])
>>> @test isequal("c", Rif.getrnames(rvi2)[3])
>>>
>>> # setAttr/getAttr will be equivalent
>>> vi2 = Int32[1,2,3]
>>> rvi2 = Rif.RArray{Int32,1}(vi2)
>>> @test_throws ErrorException Rif.getAttr(rvi2, "names")
>>> Rif.setAttr!(rvi2, "names",
>>>  Rif.RArray{ASCIIString,1}(ASCIIString["a", "b", "c"]))
>>> @test isequal("a", Rif.getAttr(rvi2, "names")[1])
>>> @test isequal("a", Rif.getrnames(rvi2)[1])
>>> @test isequal("b", Rif.getAttr(rvi2, "names")[2])
>>> @test isequal("b", Rif.getrnames(rvi2)[2])
>>> @test isequal("c", Rif.getAttr(rvi2, "names")[3])
>>> @test isequal("c", Rif.getrnames(rvi2)[3])
>>> ```
>>>
>>> On Saturday, October 25, 2014 12:38:10 PM UTC-4, xiong...@gmail.com 
>>> wrote:

 In R, we can assign names for a variable as:
 > x<-c(1,2,3)
 > names(x)=c("A","B","C")
 > x
 A B C 
 1 2 3

 In Julia, I can create a RArray by
 x=Rif.cR([1,2,3])
 But anyone know how to assign the "names" to this RArray variable in 
 Julia?

>>>