Bạn có biết điều gì đó về những khả năng củaSử dụng R từ Scala và gọi Scala từ R?
- gọi Scala từ R và
- sử dụng R (thư viện) từ bên trong Scala?
Trân trọng
Raffael
Bạn có biết điều gì đó về những khả năng củaSử dụng R từ Scala và gọi Scala từ R?
Trân trọng
Raffael
Tôi không biết nếu có giao diện trực tiếp Scala, nhưng rJava http://www.rforge.net/rJava/ nên giúp đỡ.
Người ta có thể sử dụng rJava nhưng tôi không tự tin rằng đây là cách tốt nhất.
https://github.com/hughleat/scala2R
tôi đã viết điều này trong khi học tập Scala. Không chắc chắn nếu nó hoạt động nữa. Đó là một JRI gói DSL nhỏ. Có lẽ các macro và cộng sự có thể làm tốt hơn rất nhiều.
Kiểm tra số jvmr package trong R khả dụng trên CRAN. Nó cho phép bạn:
Nó cũng cho phép bạn làm tương tự với Java. Bài viết mô tả cách sử dụng của nó là here. (Tiết lộ: Tôi là tác giả.)
Rất hữu ích. Tôi rất muốn thấy ai đó sử dụng nó để tạo một bộ chuyển đổi Scala sạch sẽ cho đồ họa/đồ họa lưới/lưới. Quên JFreeChart, JMathPlot, vv, R âm mưu là chiến thắng! – metasim
@David: Cảm ơn bài đăng này. Nó rất hữu ích và tôi đã thành công trong việc có được thông dịch viên R làm việc trong scala nhưng tôi không chắc chắn làm thế nào để sử dụng một số chức năng R trong scala ví dụ như (scan, laply..etc) tôi cũng muốn biết làm thế nào để thêm các thư viện như plyr và các công cụ khác từ scala. Mọi sự trợ giúp sẽ rất được trân trọng. – Pawan
@Pawan Tôi cũng vậy, tôi muốn biết cách thêm thư viện R.Bạn đã tìm thấy giải pháp chưa? –
Tôi đã có thể đạt được nó bằng cách sử dụng jvmr. Các mã dưới đây là mẫu apache ứng dụng tia lửa tôi đang chạy từ giao diện điều khiển scala.
package org.scala.rtest
import org.ddahl.jvmr.RInScala
object RIntegration {
def main(args: Array[String]) {
val R = RInScala()
R>"""
require(sparkR)
score.sentiment = function(sentences, pos.words, neg.words, .progress='none')
{
require(plyr)
require(stringr)
scores = laply(sentences, function(sentence, pos.words, neg.words) {
# clean up sentences with R's regex-driven global substitute, gsub():
sentence = gsub('[[:punct:]]', '', sentence, ignore.case=T)
sentence = gsub('[[:cntrl:]]', '', sentence, ignore.case=T)
sentence = gsub('\\d+', '', sentence, ignore.case=T)
# and convert to lower case:
sentence = tolower(sentence)
# split into words. str_split is in the stringr package
word.list = str_split(sentence, '\\s+')
# sometimes a list() is one level of hierarchy too much
words = unlist(word.list)
# compare our words to the dictionaries of positive & negative terms
pos.matches = match(words, pos.words)
neg.matches = match(words, neg.words)
# match() returns the position of the matched term or NA
# we just want a TRUE/FALSE:
pos.matches = !is.na(pos.matches)
neg.matches = !is.na(neg.matches)
# and conveniently enough, TRUE/FALSE will be treated as 1/0 by sum():
score = sum(pos.matches) - sum(neg.matches)
return(score)
}, pos.words, neg.words, .progress=.progress)
scores.df = data.frame(score=scores, text=sentences)
return(scores.df)
}
"""
R(" x <- scan('positive-words.txt',what='character',comment.char=';')")
R(" y <- scan('negative-words.txt',what='character',comment.char=';')")
R(" z <- scan('twitterstream1.txt', what='character')")
R.eval("df <- score.sentiment(z,x,y)")
println(R.capture("df"))
}
}
Hy vọng điều này sẽ hữu ích.
Có một gói R trên CRAN cho mục đích chính xác này, được gọi là "rscala". Nó cho phép gọi hai hướng (R từ Scala và Scala từ R), cũng như gọi lại (ví dụ: gọi lại cho R từ mã Scala được gọi là từ R). Đó là well documented. Gói này thay thế gói "jvmr" được đề cập trong câu trả lời khác.
CRAN để thuận tiện: https://cran.r-project.org/web/packages/rscala/ – michael
Xin chào mọi người. Một cách, có thể không phải là đặc biệt cho tình huống này, sẽ là sử dụng một dịch vụ Restful. Tuy nhiên, trong R, bạn chỉ có thể truy cập các Dịch vụ an toàn khác và không cung cấp Dịch vụ an toàn. Vì vậy, một gói http (hoặc lib) trong R sẽ là cần thiết hỗ trợ PUT và DELETE của http. Có một gói phần mềm đã cấu trúc dữ liệu R thành XML (quên cái nào) vì vậy điều này sẽ dễ dàng. Có bất kỳ con trỏ nào cho gói http không? Tôi thích gói R.rsp cho httml GET, nhưng phải sử dụng cái gì cho PUT và DELETE? Mục tiêu cuối cùng là kết hợp R và haskell. – mrsteve