我有以下 R 代码:
CutMatrix <- FullMatrix[, colSums( FullMatrix[-1,] != FullMatrix[-nrow( FullMatrix ), ] ) > 0]
它采用一个矩阵 - FullMatrix 并通过查找 FullMatrix 中的哪些列具有超过 1 个唯一值的列来制作一个 CutMatrix - 因此消除所有具有相同值的列。我想知道我是否可以使用 Rcpp 来加快大型矩阵的速度,但我不确定最好的方法 - 是否有一种含糖的方法可以轻松做到这一点(比如循环遍历 cols 并计算唯一值的数量)或者我是否必须使用 STL 中更复杂的东西。
我想也许像下面这样的事情是一个开始(我还没有成功) - 尝试在 R 函数中的 colSums 大括号之间进行操作,但我不认为我是子设置矩阵正确,因为它不起作用。
src <- '
//Convert the inputted character matrix of DNA sequences an Rcpp class.
Rcpp::CharacterMatrix mymatrix(inmatrix);
//Get the number of columns and rows in the matrix
int ncolumns = mymatrix.ncol();
int numrows = mymatrix.nrow();
//Get the dimension names
Rcpp::List dimnames = mymatrix.attr("dimnames");
Rcpp::CharacterMatrix vec1 = mymatrix(Range(1,numrows),_);
Rcpp::CharacterMatrix vec2 = mymatrix(Range(0,numrows-1),_);
'
uniqueMatrix <- cxxfunction(signature(inmatrix="character"), src, plugin="Rcpp")
谢谢,本。