在 Rcpp 中设置 *only* 列名
Setting *only* column names in Rcpp
我只想使用 Rcpp 设置矩阵的列名,但保留行名不变。据我所知, dimnames
属性只设置两者。例如:
- R extension in C, setting matrix row/column names
- http://dirk.eddelbuettel.com/code/rcpp/Rcpp-FAQ.pdf(第 13 页)
这是我想要做的事情的一个最小示例,但只是在 Rcpp 而不是 R 中:
my.mat <- diag(3)
colnames( my.mat ) <- c( "A", "B", "C")
my.mat
A B C
[1,] 1 0 0
[2,] 0 1 0
[3,] 0 0 1
有办法吗?
较新版本的 Rcpp
提供 rownames()
和 colnames()
,它们的功能与 R
对应的功能相同:
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
NumericMatrix test(NumericMatrix x)
{
rownames(x) = CharacterVector::create("a", "b", "c");
colnames(x) = CharacterVector::create("A", "B", "C");
return x;
}
/*** R
test(matrix(1:9, nrow = 3))
*/
给我
> test(matrix(1:9, nrow = 3))
A B C
a 1 4 7
b 2 5 8
c 3 6 9
我只想使用 Rcpp 设置矩阵的列名,但保留行名不变。据我所知, dimnames
属性只设置两者。例如:
- R extension in C, setting matrix row/column names
- http://dirk.eddelbuettel.com/code/rcpp/Rcpp-FAQ.pdf(第 13 页)
这是我想要做的事情的一个最小示例,但只是在 Rcpp 而不是 R 中:
my.mat <- diag(3)
colnames( my.mat ) <- c( "A", "B", "C")
my.mat
A B C
[1,] 1 0 0
[2,] 0 1 0
[3,] 0 0 1
有办法吗?
较新版本的 Rcpp
提供 rownames()
和 colnames()
,它们的功能与 R
对应的功能相同:
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
NumericMatrix test(NumericMatrix x)
{
rownames(x) = CharacterVector::create("a", "b", "c");
colnames(x) = CharacterVector::create("A", "B", "C");
return x;
}
/*** R
test(matrix(1:9, nrow = 3))
*/
给我
> test(matrix(1:9, nrow = 3))
A B C
a 1 4 7
b 2 5 8
c 3 6 9