-
Notifications
You must be signed in to change notification settings - Fork 48
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bug with the matrix class such that attributes cannot be set #273
Comments
Furthermore .... attributes can't be set on matrices. For example: // set_and_get.cpp
#include "cpp11.hpp"
using namespace cpp11;
[[cpp11::register]]
sexp set_and_get_attr() {
writable::doubles_matrix<> Y(0,0);
Y.attr("my-attr") = writable::strings({"hello"});
return Y.attr("my-attr");
} Then in R: cpp11::cpp_source('set_and_get.cpp')
set_and_get_attr()
# NULL To set attributes, I think something like moving (or maybe copying? didn't try it) to a sexp works e.g. // hacky_set_attr.cpp
#include "cpp11.hpp"
using namespace cpp11;
[[cpp11::register]]
sexp hacky_set_attr() {
writable::doubles_matrix<> Y(0,0);
sexp Y_sexp(std::move(Y.data()));
Y_sexp.attr("my-attr") = "hello";
return Y_sexp;
} And in R: cpp11::cpp_source('hacky_set_attr.cpp')
hacky_set_attr()
# <0 x 0 matrix>
# attr(,"my-attr")
# [1] "hello" So basically some kind of 'upcasting'. |
Here's another reply from stackoverflow, @stephematician |
Just for the record: I can add row and column names from C++ as long as the object is a example https://github.com/pachadotdev/economiccomplexity/blob/main/src/code.cpp#L28-L29 |
refloating this, I provided a fix for a "bug" that did not let me export the defined attributes for a matrix on C++ side. |
Such as it's the case for
names()
, it would be extremely convenient to haverownames()
andcolnames()
in cpp codes.My idea (sorry that I don't enough C++) would be like:
The text was updated successfully, but these errors were encountered: