source

R과 줄리아를 연결하는 것?

itover 2023. 6. 26. 23:03
반응형

R과 줄리아를 연결하는 것?

Julia는 빠르고 구문에 적합한 계산(: 여기)에 대해 매우 유망해 보이지만, 저는 그것이 전체 통계 워크플로우 측면에서 아직 한동안 R 근처에 있지 않을 것이라고 생각합니다.그래서 저는 코드의 느린 부분을 최적화하기 위해 C++이 주로 R 프로그램에서 사용되는 곳에 그것을 사용하고 싶습니다.하지만 줄리아를 배우는 데 시간을 투자하기 전에 줄리아 스니펫을 R 코드에 내장할 수 있는 기능이 무엇인지 궁금합니다.

그래서:

  • R과 Julia를 연결하는 어떤 시설이 있습니까?
  • Rcpp에 대한 0의 척도에서 그들은 얼마나 견고하고 잘 고안되었습니까?

Rcpp가 지금 R 내에서 C++를 호출하는 것을 허용하는 것처럼, 저는 R에서 Julia에게 전화하고 싶습니다.저는 줄리아에게서 R에게 전화하고 싶지 않습니다.(따라서 RCall.jl은 작동하지 않습니다.

도 1월에 더그 베이츠가 저에게 경고문을 보낸 이후로 줄리아를 계속 보고 있습니다.하지만 @gsk3처럼, 저는 풍부한 R 객체를 Julia에게 전달하고 싶기 때문에 이것을 "Rcpp 척도"로 측정합니다.그리고 그것은 지금 전혀 지원되지 않는 것 같습니다.

Julia는 멋지고 간단한 C 인터페이스를 가지고 있습니다.그래서 그것은 우리에게 비슷한 것을 줍니다..C()했듯이, 로 하만최근에 r-devel에논의이은정, 않다니습원지하말지당신듯서했▁want를 원하지 않습니다..C()대부분의 경우 당신은 오히려 원합니다..Call()실제 R 객체를 나타내는 실제 SEXP 변수를 전달하기 위해.그래서 지금 저는 이 제한 때문에 R의 Julia를 위한 범위가 거의 보이지 않습니다.

아마도 Julia가 조금 성숙하고 적절한 C++ 인터페이스를 얻기 전에 tcp/ip to Rserve를 사용하는 간접 인터페이스가 첫 번째 시작이 될 수 있습니다.또는 실제 R API가 C 계층만 제공하는 것처럼 데이터를 Julia에게 제공하는 중간 계층에 들어가기 전에 Rcpp를 기반으로 R에서 C++로 데이터를 전송합니다.몰라.

그리고 하루의 끝에는, 약간의 인내가 필요할지도 모릅니다.저는 1996년이나 1997년쯤에 프리츠 리쉬가 comp.os.linux.announce 뉴스그룹에서 첫 발표를 했을 때 R을 보기 시작했습니다.그리고 R은 그 당시 다소 제한적인 시설을 가지고 있었습니다. (그러나 S 언어의 완전한 약속은 물론, 우리가 승자가 있다는 것을 알았기 때문입니다.)그리고 몇 년 후에 저는 그것을 제 주요 모델링 언어로 만들 준비가 되었습니다.그 당시에 CRAN은 아직 100개도 안 되는 패키지를 가지고 있었습니다.

줄리아가 거기에 도착할 수도 있습니다.하지만 지금은 우리 중 많은 사람들이 R에서 일을 끝내고 줄리아를 몇 번 호기심 어린 눈으로 볼 것이라고 생각합니다.

R의 RJulia R 패키지는 지금 꽤 좋아 보입니다. R CMD check경고 또는 오류 없이 실행됩니다(경우)julia이 올바르게 설치됨).

제가 보기에 가장 큰 TODO는 Julia가 R의 정말 기본적인 유연한 일반 데이터 구조를 구성하는 명명된 목록을 반환하도록 하는 것입니다.

Doug Bates는 RC가 Julia에서 R로의 양방향 인터페이스(즉, R에서 Julia로의 방향이 아닌 다른 방향)에 대해 나에게 경고했습니다.또한 더그는 현재 안정적인 줄리아 버전보다는 줄리아 0.4.0을 목표로 할 것을 권장했습니다.

위의 내용이 작성된 이후 몇 가지 인터페이스가 추가로 등장했습니다.이제(2021-04), R 패키지가 있습니다.

  • JuliaCall (~2017)는 R에 Julia를 포함하고, CRAN에서 사용할 수 있도록 적극적으로 유지됩니다.
  • JuliaConnectoR (~2019), 훨씬 더 높은 목표를 가진 CRAN에서도 이용 가능합니다. 예를 들어 줄리아 객체를 R로 직접 가져오기.

답변에서 설명한 바와 같이 줄리아 개발 계획은 CABI를 사용하여 호출 가능한 공유 라이브러리에 줄리아 코드를 컴파일할 수 있도록 하는 것입니다.일단 이런 일이 발생하면, R의 Julia를 C/C++ 코드로 부르는 것만큼이나 쉽게 부를 수 있을 것입니다.그러나 이것이 가능해지기 전에 상당한 양의 작업이 필요합니다.

는 다과같은만를다듭니라는 R .JuliaCall최근에 줄리아를 R에 심었습니다.는 CRANCRAN에 .

https://cran.r-project.org/web/packages/JuliaCall/index.html

https://github.com/Non-Contradiction/JuliaCall

패키지의 용도는 다음과 같습니다.

library(JuliaCall)
julia <- julia_setup()
julia_command("a = sqrt(2)"); julia_eval("a")
julia_eval("sqrt(2)")
julia_call("sqrt", 2)
julia_eval("sqrt")(2)

보다시피, 당신은 명령 문자열을 보내고 줄리아 기능을 호출할 수 있습니다.

하는 R .JuliaCall를 들어, , 를들면예,

  • convexjlr Cran에도 있는 Convex.jl을 사용하여 R의 규율된 볼록 프로그래밍용.
  • Julia 패키지를 ipoptjlr사용하는 IPOPT(Interior Point Optimizer)용 R 인터페이스Ipopt.jl.

에 대한 피드백을 환영합니다.JuliaCall!!

빠른 업데이트.이 질문이 제기된 이후, 줄리아 내에서 R 프로그램을 호출할 수 있는 줄리아 패키지가 시작되었습니다.

많은 정보: https://github.com/lgautier/Rif.jl

이 프로젝트를 본 사람이 있습니까?

https://github.com/armgong/RJulia

상당히 새로운 것이지만 정확히 요청한 것을 수행하고 있는 것 같습니다!

또한 XR 패키지 제품군의 XR Julia 패키지는 (R의 제작자 중 한 명인) John Chambers의 eXtend R을 목표로 합니다.JSON(Julia와 RtherrJulia 및 유사한 패키지 간에 데이터를 전송하기 위해 약간 다른 접근 방식)을 사용합니다.

내 시도를 확인해 볼 수도 있습니다.JuliaConnectoRR-패키지.패키지는 GitHubCRAN에서 사용할 수 있습니다.

R 코드의 R 함수처럼 사용할 수 있도록 R에서 Julia로부터 직접 함수를 가져오는 것이 목표입니다.Julia 함수의 반환 값은 R 데이터 구조로 변환되어 R에서 사용될 수 있으며 Julia 함수로 다시 전달될 수도 있습니다.Julia와 R의 추가 통합을 위해, R 함수를 콜백 함수로 전달하여 Julia에서 R로 콜백할 수도 있습니다.

XRJulia와 유사하게 JuliaConnectoR은 TCP에 의존하지만 기능 지향적이며 XRJulia처럼 텍스트 기반 JSON 메시지 대신 최적화된 사용자 지정 스트리밍 형식을 사용합니다.TCP에 의한 통신의 한 가지 장점은 Julia와 R의 다른 버전에 대한 안정성입니다.이것은 RCall과 Julia Call과 같은 C 인터페이스 수준의 통합으로 유지하기가 훨씬 어렵습니다.

이 패키지는 Julia » 1.0 및 다양한 R 버전과 함께 작동합니다.

언급URL : https://stackoverflow.com/questions/9965747/linking-r-and-julia

반응형