当前位置: 首页 > 知识库问答 >
问题:

通过XRJulia将公式从R传递到Julia

呼延原
2023-03-14
library(XRJulia)
findJulia(test=T) # Works fine
juliaEval("using MixedModels")

jlmerj<-juliaEval("
 function(f,d)
   m=fit(LinearMixedModel,f,d)
   return(m)
 end
 ")
jlmer=JuliaFunction(jlmerj)

jdata<-juliaSend(data[,c('IRI_EC','learnid')])
jfrm<-juliaEval("@formula(IRI_EC ~  1 + (1|learnid))")
> jdata
Julia proxy object
Server Class: Dict{String,Any}; size: 7
> jfrm
Julia proxy object
Server Class: StatsModels.Formula; size: NA
res<-jlmer(jfrm,jdata)
Error: Evaluating Julia expression: R_1_7(R_1_9, R_1_29)

有人这样做过吗?怎么做?

共有1个答案

慕容念
2023-03-14

你能给出一个示例数据集来运行你的代码吗?

再次检查后,我怀疑问题不在于公式,而在于xrjulia中Rdata.frame的转换,因为在您的消息中可以看到jdatadict(dictionary)的代理,而不是julia中的dataframe或类似的东西。我还(简要地)签入了MixedModels,这个包似乎不能将dict作为数据集处理。

JuliaCall的用法有点类似于xrjulia,但它将Rdata.frame转换为juliadataframe。在您的示例中使用xrjulia对我来说似乎没问题。因此,JuliaCall可以使用,但XRJulia不能使用,这也意味着问题出在XRJuliadata.frame的转换上。

library(XRJulia)
findJulia(test = T) # Works fine
juliaEval("using MixedModels")

juliaEval("using DataFrames")

jlmerj <- juliaEval("
                  function(f,d)
                  m=fit(LinearMixedModel,f,d)
                  return(m)
                  end
                  ")
jlmer <- JuliaFunction(jlmerj)

mindata <- data.frame(IRI_EC = c(15, 14, 27, 0, 22, 16, 23, 17, 20, 26), learnid = factor(1:10))

jfrm <- juliaEval("@formula(IRI_EC ~  1 + (1|learnid))")

jIRI_EC <- juliaSend(mindata$IRI_EC) ## send columns one by one
## first convert factors to integers and convert back in julia
jlearnid <- juliaCall("CategoricalArrays.CategoricalArray", juliaSend(as.integer(mindata$learnid))

## combine columns to create dataframe in julia
jdata <- juliaEval(paste0('DataFrame(Dict([(:IRI_EC,', juliaName(jIRI_EC),
                          '), (:learnid, ', juliaName(jlearnid), ')]))'))

res <- jlmer(jfrm,jdata)

res
 类似资料:
  • 我试图编写一个Julia函数(在本例中为)并在R中使用它。 R代码: 由reprex包(v2.0.1)在2021-09-05创建

  • 问题内容: 假设我有一个Python变量: 然后通过呈现HTML将其传递给Jinja,并且我在JavaScript中还有一个名为的函数。我正在尝试通过的每个项目。我尝试过这样的事情: 是否可以将列表从Python传递到JavaScript,还是应该逐个循环传递列表中的每个项目?我怎样才能做到这一点? 问题答案: 要将一些上下文数据传递给javascript代码,您必须对其进行序列化,以使其被jav

  • 我试图将一些信息从子项中的输入字段传递给父项。 到目前为止我所掌握的是: 34 this.setstate({searchstring:event.target.value},()=>{ >35 this.props.onchild(this.state.SearchString); 希望有人能帮忙。顺便说一句,我是个小人...

  • 问题内容: 我可以在R中使用以下代码在任何通用SQL数据库中选择不同的行。我会使用,但SQL语法不支持它。无论如何,这确实有效: 我一直在成功使用它,但是想知道如何在其他dplyr步骤之后传递相同的SQL查询,而不是像上面所示那样仅将其用作第一步。最好用一个例子来说明: 因此,我有两个SQL表,然后我要查看不同的行,并保留所有列。是否如上所述将SQL代码通过管道传递到R中(简单地利用该函数)?如果

  • 我50%的希望渺茫:P.我(一开始)试图从一个线程的代码中更新GUI,但得到了NullException。在阅读了一段时间后,我了解到线程淹没了JavaFX应用程序窗口,为了从线程更新GUI,我需要使用以下代码: 所以我确实使用了这个代码,它确实允许我编辑我的主类的图形用户界面。不过,我的问题很简单。= 如何将父级的public void run()中的参数传递给这个?。例如,字符串tmpStri

  • 问题内容: 前往游览的频道示例如下:https : //tour.golang.org/concurrency/2 通道c在求和函数中被修改,并且该函数终止后更改仍然存在。显然,c是通过引用传递的,但是没有创建指向c的指针。是否在go中通过引用隐式传递了通道? 问题答案: 从技术上讲,它们是被复制的,因为当您使用时 ,您是在堆上分配内容,因此从技术上讲,它是幕后的指针。但是指针类型没有公开,因此可