pub struct DataFrame<T: IntoList> {
rows: Vec<T>,
}Expand description
Convert row-oriented data into a column-oriented R data.frame.
This type collects a sequence of row elements (structs implementing IntoList)
and transposes them into column vectors suitable for creating an R data.frame.
§Example
ⓘ
use miniextendr_api::{miniextendr, convert::DataFrame};
#[derive(IntoList)]
struct Person {
name: String,
age: i32,
height: f64,
}
#[miniextendr]
fn make_people() -> DataFrame<Person> {
DataFrame::from_rows(vec![
Person { name: "Alice".into(), age: 30, height: 165.0 },
Person { name: "Bob".into(), age: 25, height: 180.0 },
Person { name: "Carol".into(), age: 35, height: 170.0 },
])
}
// In R: make_people() returns a data.frame with 3 rows and columns: name, age, height§Row-oriented to Column-oriented
R data frames are column-oriented (each column is a vector), but data is often
produced row-by-row in Rust. DataFrame handles the transposition:
Input (row-oriented): Output (column-oriented):
Row 1: {name: "A", age: 30} name column: ["A", "B", "C"]
Row 2: {name: "B", age: 25} → age column: [30, 25, 35]
Row 3: {name: "C", age: 35}Fields§
§rows: Vec<T>Implementations§
Trait Implementations§
Source§impl<T: IntoList> FromIterator<T> for DataFrame<T>
impl<T: IntoList> FromIterator<T> for DataFrame<T>
Source§fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self
fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self
Creates a value from an iterator. Read more
Source§impl<T: IntoList> IntoDataFrame for DataFrame<T>
impl<T: IntoList> IntoDataFrame for DataFrame<T>
Source§fn into_data_frame(self) -> List
fn into_data_frame(self) -> List
Convert this value into an R data.frame. Read more
Source§impl<T: IntoList> IntoR for DataFrame<T>
IntoR implementation for DataFrame.
impl<T: IntoList> IntoR for DataFrame<T>
IntoR implementation for DataFrame.
This allows DataFrame to be returned directly from #[miniextendr] functions.
Source§type Error = Infallible
type Error = Infallible
The error type for fallible conversions. Read more
Source§fn try_into_sexp(self) -> Result<SEXP, Self::Error>
fn try_into_sexp(self) -> Result<SEXP, Self::Error>
Try to convert this value to an R SEXP. Read more
Auto Trait Implementations§
impl<T> Freeze for DataFrame<T>
impl<T> RefUnwindSafe for DataFrame<T>where
T: RefUnwindSafe,
impl<T> Send for DataFrame<T>where
T: Send,
impl<T> Sync for DataFrame<T>where
T: Sync,
impl<T> Unpin for DataFrame<T>where
T: Unpin,
impl<T> UnsafeUnpin for DataFrame<T>
impl<T> UnwindSafe for DataFrame<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<C, T> RFromIter<T> for Cwhere
C: FromIterator<T>,
impl<C, T> RFromIter<T> for Cwhere
C: FromIterator<T>,
Source§impl<T> ToDataFrameExt for Twhere
T: IntoDataFrame,
impl<T> ToDataFrameExt for Twhere
T: IntoDataFrame,
Source§fn to_data_frame(self) -> ToDataFrame<Self>
fn to_data_frame(self) -> ToDataFrame<Self>
Wrap
self in ToDataFrame for R data.frame conversion.