Skip to content

Commit

Permalink
Merge branch 'master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
palday authored Aug 29, 2023
2 parents 5249641 + 305efff commit 9053bd4
Show file tree
Hide file tree
Showing 10 changed files with 27 additions and 14 deletions.
9 changes: 8 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:
pull_request:
jobs:
test:
name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }}
name: Julia ${{ matrix.version }} - R ${{ matrix.R }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }}
runs-on: ${{ matrix.os }}
continue-on-error: ${{ matrix.experimental }}
strategy:
Expand All @@ -19,6 +19,10 @@ jobs:
- '1.6'
- '1'
- nightly
R:
- 'release'
- '4.0'
- '3.4'
os: [ubuntu-latest]
arch: [x64]
experimental: [false]
Expand All @@ -28,10 +32,12 @@ jobs:
arch: x64
version: 1
experimental: false
R: 'release'
- os: windows-latest
arch: x64
version: 1
experimental: false
R: 'release'
steps:
- uses: actions/checkout@v2
- uses: julia-actions/setup-julia@v1
Expand All @@ -42,6 +48,7 @@ jobs:
- uses: r-lib/actions/setup-r@v2
with:
use-public-rspm: true
r-version: ${{ matrix.R }}
- run: echo "LD_LIBRARY_PATH=$(R RHOME)/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV
if: matrix.os == 'ubuntu-latest'
- uses: julia-actions/julia-buildpkg@v1
Expand Down
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name = "RCall"
uuid = "6f49c342-dc21-5d91-9882-a32aef131414"
authors = ["Douglas Bates <dmbates@gmail.com>", "Randy Lai <randy.cs.lai@gmail.com>", "Simon Byrne <simonbyrne@gmail.com>"]
version = "0.13.15"
version = "0.13.16"

[deps]
Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
Expand Down
2 changes: 1 addition & 1 deletion docs/src/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ This problem doesn't affect Julia ≥ 1.6!

### Other methods

If you have installed R by some other method (e.g. building from scratch, or files copied but not installed in the usual manner), which often happens on cluster installations, then you may need to set `R_HOME` or your `PATH` as described above before running `Pkg.build("RCall")` in order for the build script to find your R installation. RCall requries R to be installed with its shared library. It could be done with the flag `--enable-R-shlib`, consult your server administrator to see if it was the case.
If you have installed R by some other method (e.g. building from scratch, or files copied but not installed in the usual manner), which often happens on cluster installations, then you may need to set `R_HOME` or your `PATH` as described above before running `Pkg.build("RCall")` in order for the build script to find your R installation. RCall requires R to be installed with its shared library. It could be done with the flag `--enable-R-shlib`, consult your server administrator to see if it was the case.

For some environments, you might also need to specify `LD_LIBRARY_PATH`
```sh
Expand Down
2 changes: 1 addition & 1 deletion src/convert/default.jl
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ rcopy(r) = r
# logic of default sexp

"""
`robject(x)` converts a Julia object `x` to a corresponding RObject implictly. Explict conversions
`robject(x)` converts a Julia object `x` to a corresponding RObject implicitly. Explicit conversions
could be called with `robject(<R Class>, x)`.
"""
robject(s) = RObject(s)
Expand Down
2 changes: 1 addition & 1 deletion src/ijulia.jl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# IJulia hooks for displaying plots with RCall

# TODO: create a special graphics device. This would allow us to not accidently close devices opened by users, and display plots immediately as they appear.
# TODO: create a special graphics device. This would allow us to not accidentally close devices opened by users, and display plots immediately as they appear.

ijulia_mime = nothing

Expand Down
2 changes: 1 addition & 1 deletion src/language.jl
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ function rlang_p(f, args...; kwargs...)
l
end

"Create a function call from a function pointer and a list of arguments and return it as an RObject, which can then be evaulated"
"Create a function call from a function pointer and a list of arguments and return it as an RObject, which can then be evaluated"
rlang(f, args...; kwargs...) = RObject(rlang_p(f,args...; kwargs...))


Expand Down
6 changes: 3 additions & 3 deletions src/methods.jl
Original file line number Diff line number Diff line change
Expand Up @@ -459,13 +459,13 @@ isNA(x::Float64) = is_ieee_na(x)
isNA(x::Int32) = x == Const.NaInt
isNA(s::Ptr{CharSxp}) = s === sexp(Const.NaString)
isNA(s::Ptr{S}) where S<:VectorSxp = length(s) == 1 ? isNA(s[1]) : false
# all other values are consided as non-NA.
# all other values are considered as non-NA.
isNA(s::Any) = false

isna(s::Ptr{S}, i::Integer) where S<:VectorSxp = isNA(s[i])
isna(s::Ptr{S}) where S<:VectorSxp = reshape(BitArray([isNA(a) for a in s]), size(s))
"""
Check if the ith member of s coorespond to R's NA values.
Check if the ith member of s correspond to R's NA values.
"""
isna(r::RObject, i::Integer) = isna(r.p, i)
"""
Expand Down Expand Up @@ -544,7 +544,7 @@ getindex(e::RObject{EnvSxp},s) = RObject(getindex(sexp(e),s))
function setindex!(e::Ptr{EnvSxp},v::Ptr{S},s::Ptr{StrSxp}) where S<:Sxp
# `Rf_defineVar` is unsafe to use if the binding is locked.
# However, `setVarInFrame` is not exported. `base::assign` is
# an avaliable alternative.
# an available alternative.
rcall_p(Const.BaseNamespace["assign"], s, v, envir = e)
end
function setindex!(e::Ptr{EnvSxp},v,s)
Expand Down
2 changes: 1 addition & 1 deletion src/render.jl
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ function render(script::String)
end

"""
Prepare code for evaluating the julia expressions. When the code is execulated,
Prepare code for evaluating the julia expressions. When the code is evaluated,
the results are stored in the R environment `#JL`.
"""
function prepare_inline_julia_code(symdict, escape::Bool=false)
Expand Down
2 changes: 1 addition & 1 deletion src/types.jl
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ end


"""
Convert a `Ptr{UnknownSxp}` to an approptiate `Ptr{S<:Sxp}`.
Convert a `Ptr{UnknownSxp}` to an appropriate `Ptr{S<:Sxp}`.
"""
function sexp(p::Ptr{UnknownSxp})
typ = sexpnum(p)
Expand Down
12 changes: 9 additions & 3 deletions test/convert/datetime.jl
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,13 @@ r = RObject(d)
@test rcopy(r) === d
@test rcopy(DateTime, r) === d
@test rcopy(R"as.POSIXct($s, 'UTC', '%Y-%m-%dT%H:%M:%S')") == d
@test rcopy(R"identical(as.character($d, '%Y-%m-%dT%H:%M:%S'), $s)")
# previously the second argument to as.character.POSIXt was `format``, now it defaults
# to `digits`. Using `format` as a named argument gives a deprecation warning
# this changed in R 4.3.0 but is listed as a bugfix
# > as.character(<POSIXt>) now behaves more in line with the methods for atomic vectors such as numbers,
# > and is no longer influenced by options(). Ditto for as.character(<Date>). The as.character() method
# > gets arguments digits and OutDec with defaults not depending on options(). Use of as.character(*, format = .) now warns.
@test rcopy(R"identical(format($d, '%Y-%m-%dT%H:%M:%S'), $s)")


s = ["2001-01-01T01:01:01", "1111-11-11T11:11:00", "2012-12-12T12:12:12"]
Expand All @@ -88,7 +94,7 @@ r = RObject(d)
@test rcopy(r) == d
@test rcopy(Array{DateTime}, r) == d
@test rcopy(R"as.POSIXct($s, 'UTC', '%Y-%m-%dT%H:%M:%S')") == d
@test rcopy(R"identical(as.character($d, '%Y-%m-%dT%H:%M:%S'), $s)")
@test rcopy(R"identical(format($d, '%Y-%m-%dT%H:%M:%S'), $s)")


# SubArray
Expand All @@ -103,7 +109,7 @@ r = RObject(d)
@test rcopy(r) == d
@test rcopy(Array{DateTime}, r) == d
@test rcopy(R"as.POSIXct($s[1:2], 'UTC', '%Y-%m-%dT%H:%M:%S')") == d
@test rcopy(R"identical(as.character($d, '%Y-%m-%dT%H:%M:%S'), $s[1:2])")
@test rcopy(R"identical(format($d, '%Y-%m-%dT%H:%M:%S'), $s[1:2])")


d = DateTime[]
Expand Down

0 comments on commit 9053bd4

Please sign in to comment.