Я хотел бы запустить функцию R из сценария в Джулии. Я могу сделать обратное, вызвать функцию Julia в R, выполнив следующие действия:
library(JuliaCall)
julia_source("bin/julia_function.jl") which has a function "juliaFunction".
out <- julia_call("juliaFunction", input1, input2)
Однако я не мог понять, как вызвать функцию R из Julia. Это не функция из библиотеки, которую, как я знаю, можно вызвать с помощью пакета RCall.
Как пример, в fun.R
my_function <- function(fname) {
paste(fname, "Griffin")
}
Затем в сценарии Julia я хотел бы вызвать my_function. Как бы я это сделал? Кроме того, я хотел бы иметь возможность вызывать сценарий Julia из командной строки, поэтому не хочу использовать режим R REPL.
Заранее спасибо.
Пробовал RCall и include("fun.R"), но это не то, что мне нужно.
@moodymudskipper Спасибо, но они упоминают только, как загрузить библиотеку и вызвать функцию из библиотеки, но не как загрузить функцию из файла в Джулию.
Ты не можешь вызвать source()
? Что-то вроде R""""source(your_file);fun(1)"""
Предположим, у вас есть этот фрейм данных и вы хотите отобразить его в R:
using Distributions, DataFrames, Random
df = DataFrame(permutedims(rand(MvNormal([1 0.75; 0.75 1]), 1000)), :auto)
Вы можете сделать сейчас:
using RCall
@rlibrary ggplot2
display(ggplot(df,aes(x=:x1,y=:x2)) + geom_point())
Обратите внимание, что в приведенном выше коде Symbol
используются в тех конструкциях кода R, где происходит отложенное вычисление параметров.
Другой вариант — интерполяция в сочетании со строковыми макросами:
R"library(ggplot2)"
R"ggplot($df,aes(x=x1,y=x2)) + geom_point()"
Придя к вашему варианту использования, вы можете сделать:
R"source('fun.R')"
Теперь вы можете вызвать функцию как:
julia> R"res <- my_function(\"Jack \")"
RObject{StrSxp}
[1] "Jack Griffin"
julia> @rget res
"Jack Griffin"
Это может помочь: juliainterop.github.io/RCall.jl/stable/gettingstarted