You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过JuliaConnectoR在Julia中调用R定义的函数并集成QuadGK?

使用JuliaConnectoR将R函数与Julia的QuadGK集成

问题背景

我尝试用R包JuliaConnectoR把R中定义的Runge函数和Julia的QuadGK积分模块结合,编写了以下代码:

library(JuliaConnectoR)
juliaSetupOk()
## [1] TRUE

fRunge <- function(x) 1/(1 + (5*x)^2)   # 定义Runge函数
jRunge <- juliaPut(fRunge)              # 创建R端的代理函数对象

但尝试用juliaCall("jRunge", 1.0)或juliaEval("jRunge(1.0)")调用时,均提示Julia中未定义jRunge变量:

juliaEval("jRunge(1.0)")
## Error: Evaluation in Julia failed.
## Original Julia error message:
## LoadError: UndefVarError: `jRunge` not defined

此前用JuliaCall时,通过julia_assign("jlRunge", fRunge)绑定变量名后能正常调用并完成积分:

library(JuliaCall)
julia_setup()

julia_assign("jlRunge", fRunge)
julia_eval("jlRunge([-1.0, -0.5, 0, 0.5, 1.0])")
## [1] 0.03846154 0.13793103 1.00000000 0.13793103 0.03846154

julia_library("QuadGK")
julia_command("I, err = quadgk(jlRunge, -1, 1);")
julia_eval("[I, err]")
## [1] 5.493603e-01 1.058539e-09

但最新版JuliaCall无法在R 4.3.0+和Julia 1.9.0+环境下正常运行,因此需要改用JuliaConnectoR实现需求。

解决方案

JuliaConnectoR的juliaPut()仅创建R端的代理对象,不会自动在Julia环境中生成同名变量,这是和JuliaCall的核心差异。以下是两种正确调用方式及QuadGK集成步骤:

方式1:直接通过R代理对象调用函数

无需在Julia环境中绑定变量,直接将代理对象传入juliaCall()即可:

# 计算单个值
juliaCall(jRunge, 1.0)
## [1] 0.03846154

# 计算多个值
juliaCall(jRunge, c(-1.0, -0.5, 0, 0.5, 1.0))
## [1] 0.03846154 0.13793103 1.00000000 0.13793103 0.03846154

方式2:在Julia环境中绑定变量名

如果需要在Julia代码中用变量名直接调用,使用JuliaConnectoR的juliaAssign()函数将代理对象绑定到Julia变量:

# 将R代理对象绑定到Julia的jlRunge变量
juliaAssign("jlRunge", jRunge)

# 用juliaEval调用函数
juliaEval("jlRunge(1.0)")
## [1] 0.03846154

集成QuadGK完成积分

方法A:绑定变量后调用QuadGK

# 加载QuadGK模块
juliaEval("using QuadGK")

# 执行积分并获取结果
result <- juliaEval("quadgk(jlRunge, -1, 1)")
I <- result[[1]]  # 积分值
err <- result[[2]]  # 误差估计
c(I, err)
## [1] 5.493603e-01 1.058539e-09

方法B:直接用代理对象调用quadgk

无需提前绑定变量,直接将代理函数传入juliaCall():

# 加载QuadGK模块
juliaEval("using QuadGK")

# 直接调用quadgk
result <- juliaCall("quadgk", jRunge, -1, 1)
c(result[[1]], result[[2]])
## [1] 5.493603e-01 1.058539e-09

内容的提问来源于stack exchange,提问作者Hans W.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 16:35:10