-
Notifications
You must be signed in to change notification settings - Fork 60
Open
Description
Values round tripped Julia -> R -> Julia -> R are lost.
Not keeping handles on references (see: #444 ) is a reasonably probable cause.
using RCall
get_arg(arg) = arg
get_arg_r(arg) = R"""$(arg)"""
get_r_val() = R"""42"""
get_roundtripped() = R"""$(get_r_val())"""
print("# Trips that don't contain Julia -> R -> Julia -> R are okay")
@info "Julia -> R -> Julia (okay)" get_arg_r(42)
@info "Julia -> R -> Julia (okay)" R"""$(get_arg(42))"""
println("R -> Julia -> R (okay, from R)")
R"""print($(get_r_val()))"""
@info "R -> Julia -> R -> Julia (okay)" R"""$(get_r_val())"""
println()
println("# Julia -> R -> Julia -> R gets lost")
println("Julia -> R -> Julia -> R (lost, from R)")
R"""print($(get_arg_r(42)))"""
println()
println("# Trips containing Julia -> R -> Julia -> R get lost")
@info "Julia -> R -> Julia -> R -> Julia (lost)" R"""$(get_arg_r(42))"""
println("R -> Julia -> R -> Julia -> R (lost, from R)")
R"""print($(get_roundtripped()))"""# Trips that don't contain Julia -> R -> Julia -> R are okay┌ Info: Julia -> R -> Julia (okay)
│ get_arg_r(42) =
│ RObject{IntSxp}
│ [1] 42
└
┌ Info: Julia -> R -> Julia (okay)
│ R"$(get_arg(42))" =
│ RObject{IntSxp}
│ [1] 42
└
R -> Julia -> R (okay, from R)
[1] 42
┌ Info: R -> Julia -> R -> Julia (okay)
│ R"$(get_r_val())" =
│ RObject{RealSxp}
│ [1] 42
└
# Julia -> R -> Julia -> R gets lost
Julia -> R -> Julia -> R (lost, from R)
NULL
# Trips containing Julia -> R -> Julia -> R get lost
┌ Info: Julia -> R -> Julia -> R -> Julia (lost)
│ R"$(get_arg_r(42))" =
│ RObject{NilSxp}
│ NULL
└
R -> Julia -> R -> Julia -> R (lost, from R)
NULL
RObject{NilSxp}
NULL
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels