[julia-users] Re: How to assign names of a RArray object in Rif.jl?
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?
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?
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?
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?
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?
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?
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? >>>