Field of matrices being returned with class `matrix` instead of `list`
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 35/100
Research direction
Start by running the supplied RcppArmadillo reproducer and compare class(), typeof(), dim(), and str() for the arma::fieldarma::cube result. Trace the exporter path for arma::field and determine why the returned list receives matrix dimensions; done means the field is a list without dimensions while the contained cubes retain their array structure.
Written by the indexing model from the issue text.
Description
Stumbled across an interesting hiccup in the exporter for arma::field<T> (the generic vector). In particular, the attributes associated with an arma::field<arma::mat> shows as matrix under a class(x) call instead of list. The only way to obtain the list type is to use a typeof() call.
#include<RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::export]]
Rcpp::List test_case() {
// Random dimensions
int N = 5,
P = 8,
J = 10,
K = 3,
S = 2;
// Create a 2d matrix
arma::mat standard_2d_matrix(P, N);
// Create a 3rd array
arma::cube standard_3d_array(J, S, N);
// Create a 4D Array
arma::field<arma::cube> nonstandard_4d_array(N);
// Fill it with cubes
nonstandard_4d_array.fill(arma::ones<arma::cube>(J, K, S));
return Rcpp::List::create(
Rcpp::Named("d2", standard_2d_matrix),
Rcpp::Named("d3", standard_3d_array),
Rcpp::Named("d4", nonstandard_4d_array)
);
}
The class issue is shown under d4 being matrix instead of list.
exporter_check = test_case()
sapply(exporter_check, FUN = class)
# d2 d3 d4
# "matrix" "array" "matrix"
sapply(exporter_check, FUN = typeof)
# d2 d3 d4
# "double" "double" "list"
Moreover, the list is registering as a matrix with dim(x) of N x 1 instead of a list without dimensions.
sapply(exporter_check, FUN = dim)
# $d2
# [1] 8 5
# $d3
# [1] 10 2 5
# $d4
# [1] 5 1
And the object structure:
str(exporter_check)
# List of 3
# $ d2: num [1:8, 1:5] 1.49e-154 1.49e-154 2.57e-322 6.95e-310 6.95e-310 ...
# $ d3: num [1:10, 1:2, 1:5] 1.49e-154 1.49e-154 9.96e-320 1.63e-322 1.43e-322 ...
# $ d4:List of 5
# ..$ : num [1:10, 1:3, 1:2] 1 1 1 1 1 1 1 1 1 1 ...
# ..$ : num [1:10, 1:3, 1:2] 1 1 1 1 1 1 1 1 1 1 ...
# ..$ : num [1:10, 1:3, 1:2] 1 1 1 1 1 1 1 1 1 1 ...
# ..$ : num [1:10, 1:3, 1:2] 1 1 1 1 1 1 1 1 1 1 ...
# ..$ : num [1:10, 1:3, 1:2] 1 1 1 1 1 1 1 1 1 1 ...
# ..- attr(*, "dim")= int [1:2] 5 1
- Dominant language
- C++
- Stars
- 211
- Forks
- 54
- Avg merge
- 5m
- Merged PRs (30d)
- 1
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from RcppCore/RcppArmadillo
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
RcppCore/RcppArmadillo#454 · 3 comments ·
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
RcppCore/RcppArmadillo#364 · 10 comments ·
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
RcppCore/RcppArmadillo#299 · 6 comments ·
-
Difficulty 4/5 3-5 days Newbie friendliness 20/100
RcppCore/RcppArmadillo#268 · 3 reactions ·
-
enhancement help wanted
Difficulty 4/5 3-5 days Newbie friendliness 35/100
RcppCore/RcppArmadillo#250 · 1 comment ·
All issues in RcppCore/RcppArmadillo
Similar issues
-
Website Doc Typo Open
Difficulty 1/5 Under an hour Newbie friendliness 92/100
-
Difficulty 1/5 1-3 hours Newbie friendliness 92/100
autowarefoundation/autoware_universe#13413 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
automated-analysis bug memory-safety
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100