应用从R到julia的功能

时间:2017-10-23 10:26:38

标签: r julia

我是Julia世界的新手,我试图从R调用julia mapslices函数。但是我有以下问题:

library(XRJulia)
japply=JuliaFunction(juliaEval("function(a) return(mapslices(sum,a,[1])) end"))
 a=array(runif(16),c(4,4))
juliaGet(japply(juliaSend(a)))
#     [,1]     [,2]     [,3]    [,4]
#[1,] 1.083545 2.426658 2.310691 1.44339
#But
a=array(runif(32),c(4,4,2))
juliaGet(japply(juliaSend(a)))
#  Error in checkSlotAssignment(object, name, value) : 
# ‘.Data’ is not a slot in class “array”

我做错了什么?谢谢

1 个答案:

答案 0 :(得分:1)

你也可以尝试我的包JuliaCall,它将Julia嵌入R中。在这种情况下,用法与XRJulia非常相似。 Julia中的多维数组只是自动转换为R中的多维数组。

library(JuliaCall)
julia_setup()
japply=julia_eval("function(a) return(mapslices(sum,a,[1])) end")
a=array(runif(16),c(4,4))
japply(a)
#     [,1]     [,2]     [,3]    [,4]
#[1,] 1.083545 2.426658 2.310691 1.44339
a=array(runif(32),c(4,4,2))
japply(a)
#, , 1
#
#         [,1]     [,2]     [,3]    [,4]
#[1,] 3.119738 3.116167 2.299303 1.96874
#
#, , 2
#
#         [,1]     [,2]      [,3]     [,4]
#[1,] 1.578722 1.280093 0.6427822 2.786489

XRJuliaJuliaCall之间的主要区别在于XRJulia连接到R中的Julia,而JuliaCall将Julia嵌入R中。JuliaCall具有性能优势XRJulia当你需要在R和Julia之间传输大型向量或矩阵时,它会在Julia的启动时做更多的工作(尤其是第一次)。