Skip to content

Commit 0a496ef

Browse files
krlmlrromainfrancois
authored andcommitted
Allow passing number of rows from outside
1 parent 1bc5a1b commit 0a496ef

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

inst/include/cpp11/data_frame.hpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,16 +66,18 @@ class data_frame : public list {
6666
namespace writable {
6767
class data_frame : public cpp11::data_frame {
6868
private:
69-
writable::list set_data_frame_attributes(writable::list&& x) {
70-
x.attr(R_RowNamesSymbol) = {NA_INTEGER, -static_cast<int>(calc_nrow(x))};
69+
writable::list set_data_frame_attributes(writable::list&& x, int nrow) {
70+
x.attr(R_RowNamesSymbol) = {NA_INTEGER, -nrow};
7171
x.attr(R_ClassSymbol) = "data.frame";
7272
return std::move(x);
7373
}
7474

7575
public:
76-
data_frame(const SEXP data) : cpp11::data_frame(set_data_frame_attributes(data)) {}
76+
data_frame(const SEXP data) : cpp11::data_frame(set_data_frame_attributes(data, calc_nrow(data))) {}
7777
data_frame(const SEXP data, bool is_altrep)
7878
: cpp11::data_frame(set_data_frame_attributes(data), is_altrep) {}
79+
data_frame(const SEXP data, bool is_altrep, int nrow)
80+
: cpp11::data_frame(set_data_frame_attributes(data, nrow), is_altrep) {}
7981
data_frame(std::initializer_list<list> il)
8082
: cpp11::data_frame(set_data_frame_attributes(writable::list(il))) {}
8183
data_frame(std::initializer_list<named_arg> il)

0 commit comments

Comments
 (0)