Safe Haskell | None |
---|---|
Language | Haskell2010 |
Core frame types and functions
- data RFrame k v = RFrame {
- _rframeKeys :: !(Vector k)
- _rframeLookup :: !(HashMap k Int)
- _rframeData :: !(Vector (Vector v))
- data RFrameUpdate k v = RFrameUpdate {
- _rframeUpdateKeys :: !(Vector k)
- _rframeUpdateData :: !(Vector (Vector v))
- type RFrameMap k v a = Vector k -> HashMap k Int -> Int -> Vector v -> a
- type RFrameFilter k v = RFrameMap k v Bool
- empty :: RFrame k v
- fromUpdate :: (Data k, MonadThrow m) => RFrameUpdate k v -> m (RFrame k v)
- toUpdate :: Data k => RFrame k v -> RFrameUpdate k v
- numCols :: RFrame k v -> Int
- numRows :: RFrame k v -> Int
- col :: (Data k, MonadThrow m) => k -> RFrame k v -> m (Vector v)
- decode :: (Data k, MonadThrow m) => Decoder m k v a -> RFrame k v -> m (Vector (m a))
- flatDecode :: (Data k, MonadThrow m) => Decoder m k v a -> RFrame k v -> m (Vector a)
- filter :: Data k => RFrameFilter k v -> RFrame k v -> RFrame k v
- update :: (Data k, MonadThrow m) => RFrameUpdate k v -> RFrame k v -> m (RFrame k v)
- splitCols :: Data k => (k -> Bool) -> RFrame k v -> (RFrame k v, RFrame k v)
- dropCols :: Data k => (k -> Bool) -> RFrame k v -> RFrame k v
- keepCols :: Data k => (k -> Bool) -> RFrame k v -> RFrame k v
- appendRows :: (Data k, MonadThrow m) => RFrame k v -> RFrame k v -> m (RFrame k v)
- extendCols :: (Data k, MonadThrow m) => RFrame k v -> RFrame k v -> m (RFrame k v)
- takeRows :: Int -> RFrame k v -> RFrame k v
Documentation
In-memory row-oriented frame with columns named by k
and values by v
RFrame | |
|
data RFrameUpdate k v Source #
A simpler RFrame
for updates
RFrameUpdate | |
|
type RFrameMap k v a = Vector k -> HashMap k Int -> Int -> Vector v -> a Source #
Alias for a function to be applied to each row
type RFrameFilter k v = RFrameMap k v Bool Source #
Alias for a row filter
fromUpdate :: (Data k, MonadThrow m) => RFrameUpdate k v -> m (RFrame k v) Source #
Build an RFrame
from an RFrameUpdate
.
Throws on duplicate keys.
toUpdate :: Data k => RFrame k v -> RFrameUpdate k v Source #
Build an RFrameUpdate
from an RFrame
col :: (Data k, MonadThrow m) => k -> RFrame k v -> m (Vector v) Source #
Project to the given column
decode :: (Data k, MonadThrow m) => Decoder m k v a -> RFrame k v -> m (Vector (m a)) Source #
Decode by row. Each element of the returned vector may fail on decoding error
so flatten manually or use flatDecode
.
flatDecode :: (Data k, MonadThrow m) => Decoder m k v a -> RFrame k v -> m (Vector a) Source #
An auto-flattened version of decode
.
update :: (Data k, MonadThrow m) => RFrameUpdate k v -> RFrame k v -> m (RFrame k v) Source #
Update row-wise, adding or replacing values per-column. Retains the existing column order, appending new columns. Throws on row length mismatch or duplicate columns in the update.
splitCols :: Data k => (k -> Bool) -> RFrame k v -> (RFrame k v, RFrame k v) Source #
Split columns in an RFrame
by a predicate.
dropCols :: Data k => (k -> Bool) -> RFrame k v -> RFrame k v Source #
Drop columns in an RFrame
by a predicate.
keepCols :: Data k => (k -> Bool) -> RFrame k v -> RFrame k v Source #
Keep columns in an RFrame
by a predicate.
appendRows :: (Data k, MonadThrow m) => RFrame k v -> RFrame k v -> m (RFrame k v) Source #
Appends rows to an RFrame
, retaining column order of the first.
Throws on column mismatch.
extendCols :: (Data k, MonadThrow m) => RFrame k v -> RFrame k v -> m (RFrame k v) Source #
Appends columns to an RFrame
, retaining column order of the first.