This module allows you to issue R commands from Haskell to be executed via Rserve and get the results back in Haskell data types.
- data RConn = RConn {
- rcHandle :: Handle
- rcRserveSig :: String
- rcRserveVersion :: String
- rcProtocol :: String
- rcAttributes :: [String]
- type Result = Either RserveError (Maybe RSEXP)
- type RserveError = String
- class ResultUnpack a where
- data RSEXP
- = RNULL
- | RInt Int
- | RDouble Double
- | RString String
- | RSym String
- | RBool Bool
- | RVector [RSEXP]
- | RClos Word32
- | RListTag [(RSEXP, RSEXP)]
- | RArrayInt [Int]
- | RArrayDouble [Double]
- | RArrayString [String]
- | RArrayBool [Bool]
- | RArrayComplex [(Double, Double)]
- | RSEXPWithAttrib RSEXP RSEXP
- | RUnknown Word32
- connect :: String -> Int -> IO RConn
- eval :: RConn -> String -> IO Result
- voidEval :: RConn -> String -> IO ()
- login :: RConn -> String -> String -> IO Result
- shutdown :: RConn -> IO ()
- openFile :: RConn -> String -> IO Result
- createFile :: RConn -> String -> IO Result
- closeFile :: RConn -> String -> IO Result
- removeFile :: RConn -> String -> IO Result
- writeFile :: RConn -> ByteString -> IO Result
- assign :: RConn -> String -> RSEXP -> IO Result
- unpackRArrayInt :: Result -> Maybe [Int]
- unpackRArrayBool :: Result -> Maybe [Bool]
- unpackRArrayDouble :: Result -> Maybe [Double]
- unpackRArrayComplex :: Result -> Maybe [(Double, Double)]
- unpackRArrayString :: Result -> Maybe [String]
- unpackRInt :: Result -> Maybe Int
- unpackRBool :: Result -> Maybe Bool
- unpackRDouble :: Result -> Maybe Double
- unpackRString :: Result -> Maybe String
- unpackRSym :: Result -> Maybe String
- unpackRVector :: Result -> Maybe [RSEXP]
- unpackRListTag :: Result -> Maybe [(RSEXP, RSEXP)]
- unpackRSEXPWithAttrib :: Result -> Maybe (RSEXP, RSEXP)
- rRepl :: IO ()
Documentation
RConn | |
|
type RserveError = StringSource
class ResultUnpack a whereSource
The ResultUnpack instances are used to extract R data structures from the Result container.
ResultUnpack Bool | unpack RBool |
ResultUnpack Double | unpack RDouble |
ResultUnpack Int | unpack RInt |
ResultUnpack String | unpack RString, RSym |
ResultUnpack [Bool] | unpack RArrayBool |
ResultUnpack [Double] | unpack RArrayDouble |
ResultUnpack [Int] | unpack RArrayInt |
ResultUnpack [String] | unpack RArrayString |
ResultUnpack [(Double, Double)] | unpack RArrayComplex |
ResultUnpack [(RSEXP, RSEXP)] | unpack RListTag |
ResultUnpack [RSEXP] | unpack RVector |
ResultUnpack (RSEXP, RSEXP) | unpack RSEXPWithAttrib |
Representations for the types transmitted on the Rserve protocol, refer to Rserve documentation for details
Eq RSEXP | |
Show RSEXP | |
Binary RSEXP | |
ResultUnpack [(RSEXP, RSEXP)] | unpack RListTag |
ResultUnpack [RSEXP] | unpack RVector |
ResultUnpack (RSEXP, RSEXP) | unpack RSEXPWithAttrib |
Connect to Rserve server
login to Rserve, not normally required, for authenticated sessions only
writeFile :: RConn -> ByteString -> IO ResultSource
write content to a file accessible to the Rserve session
unpackRArrayInt :: Result -> Maybe [Int]Source
unpack a Result containing an RArrayInt
unpackRArrayBool :: Result -> Maybe [Bool]Source
unpack a Result containing an RArrayBool
unpackRArrayDouble :: Result -> Maybe [Double]Source
unpack a Result containing an RArrayDouble
unpackRArrayComplex :: Result -> Maybe [(Double, Double)]Source
unpack a Result containing an RArrayComplex
unpackRArrayString :: Result -> Maybe [String]Source
unpack a Result containing an RArrayString
unpackRInt :: Result -> Maybe IntSource
unpack a Result containing an RInt
unpackRBool :: Result -> Maybe BoolSource
unpack a Result containing an RBool
unpackRDouble :: Result -> Maybe DoubleSource
unpack a Result containing an RDouble
unpackRString :: Result -> Maybe StringSource
unpack a Result containing an RString
unpackRSym :: Result -> Maybe StringSource
unpack a Result containing an RSym
unpackRVector :: Result -> Maybe [RSEXP]Source
unpack a Result containing an RVector
unpackRSEXPWithAttrib :: Result -> Maybe (RSEXP, RSEXP)Source
unpack a Result containing an RSEXPWithAttrib
Read-evaluate-print-loop for interacting with Rserve session. in ghci, load this module and run this command to test and play with Rserve this is useful to check the actual types returned by Rserve, e.g.
$ ghci
Prelude>:m Network.Rserve.Client
Prelude Network.Rserve.Client> rRepl
>c(1,2,3)
Just (RArrayDouble [1.0,2.0,3.0])
>summary(rnorm(100))
Just (RSEXPWithAttrib (RListTag [(RArrayString ["Min.","1st Qu.","Median","Mean","3rd Qu.","Max."],RSym "names"),(RArrayString ["table"],RSym "class")]) (RArrayDouble [-2.914,-0.5481,0.1618,0.1491,0.9279,3.001]))