【问题标题】:Setting *only* column names in Rcpp在 Rcpp 中设置 *only* 列名
【发布时间】:2015-02-14 22:50:56
【问题描述】:

我只想使用 Rcpp 设置矩阵的列名,但保持行名不变。据我所知,dimnames 属性只设置了两者。例如:

这是我想做的一个最小示例,但只是在 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

有没有办法做到这一点?

【问题讨论】:

  • 查看matrixdimnames 参数:一个包含行名向量(通常为NULL)和列名向量的列表。然后在 C++ 级别做同样的事情。

标签: r rcpp


【解决方案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

【讨论】:

  • 完美。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-12
  • 2017-06-13
  • 1970-01-01
  • 2012-10-04
  • 2018-07-16
  • 2022-08-20
  • 1970-01-01
相关资源
最近更新 更多