DataFrameBuilder { public DataFrame foldByRow(Object... data) { int width = columnsIndex.size(); if (width == 0) { throw new IllegalArgumentException("Empty columns"); } int lastRowWidth = data.length % width; int minHeight = data.length / width; int fullHeight = lastRowWidth > 0 ? minHeight + 1 : minHeight; Object[][] columnarData = new Object[width][fullHeight]; for (int i = 0; i < minHeight; i++) { for (int j = 0; j < width; j++) { columnarData[j][i] = data[i * width + j]; } } if (lastRowWidth > 0) { int lastRowIndex = minHeight; for (int j = 0; j < lastRowWidth; j++) { columnarData[j][lastRowIndex] = data[lastRowIndex * width + j]; } } return fromColumnarData(columnarData); } protected  DataFrameBuilder(Index columnsIndex); static DataFrameBuilder builder(String... columnLabels); static DataFrameBuilder builder(Index columnsIndex); DataFrame empty(); DataFrame columns(Series<?>... columns); DataFrame rows(Object[]... rows); DataFrameByRowBuilder byRow(); DataFrameByRowBuilder addRow(Object... row); DataFrame foldByRow(Object... data); DataFrame foldByColumn(Object... data); DataFrame foldStreamByRow(Stream<T> stream); DataFrame foldStreamByColumn(Stream<T> stream); DataFrame foldIterableByRow(Iterable<T> iterable); DataFrame foldIterableByColumn(Iterable<T> iterable); DataFrame objectsToRows(Iterable<T> objects, Function<T, Object[]> rowMapper); DataFrame foldIntByColumn(int padWith, int... data); DataFrame foldIntStreamByRow(IntStream stream); DataFrame foldIntStreamByRow(int padWith, IntStream stream); DataFrame foldIntStreamByColumn(IntStream stream); DataFrame foldIntStreamByColumn(int padWith, IntStream stream); DataFrame foldLongByColumn(long padWith, long... data); DataFrame foldLongStreamByRow(LongStream stream); DataFrame foldLongStreamByRow(long padWith, LongStream stream); DataFrame foldLongStreamByColumn(LongStream stream); DataFrame foldLongStreamByColumn(long padWith, LongStream stream); DataFrame foldDoubleByColumn(double padWith, double... data); DataFrame foldDoubleStreamByRow(DoubleStream stream); DataFrame foldDoubleStreamByRow(double padWith, DoubleStream stream); DataFrame foldDoubleStreamByColumn(DoubleStream stream); DataFrame foldDoubleStreamByColumn(double padWith, DoubleStream stream);  }
@Test public void testFoldByRow() { DataFrame df = DataFrameBuilder .builder("a", "b") .foldByRow("a", 1, "b", 2, "c", 3); new DataFrameAsserts(df, "a", "b").expectHeight(3) .expectRow(0, "a", 1) .expectRow(1, "b", 2) .expectRow(2, "c", 3); }