Skip to content

Dimension error with r_vector #462

@fangzhou-xie

Description

@fangzhou-xie

Hi, thanks for this wonderful package. As I was playing around with the r_vector class, I found the following peculiar behavior and I think this might be a bug. Specifically, there should only be 6 elements, but when writing the dimensions to the vector, it returns an error saying there's 8 elements.

cpp11::cpp_function(
"
SEXP test() {
  using namespace cpp11;
  writable::r_vector<double> vec;  // Start empty

  // Dynamically add data
  vec.push_back(1.0);
  vec.push_back(2.0);
  vec.push_back(3.0);
  vec.push_back(4.0);
  vec.push_back(5.0);
  vec.push_back(6.0);

  message(\"size: %i\", vec.size());

  // Now decide dimensions (2 rows by 3 columns)
  vec.attr(R_DimSymbol) = writable::r_vector<int>({2, 3});

  // Create matrix from the vector
  // writable::doubles_matrix<> mat(vec.data());

  return(vec.attr(R_DimSymbol));
}
"
)
test()
#> size: 6
#> Error in test(): dims [product 6] do not match the length of object [8]

Created on 2025-07-21 with reprex v2.1.1

Disclaimer: This example was taken from some code snippets from Claude while I was trying to understand the internals of this package.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions