如何x使用Rarmadillo 实现一个简单的合并功能来合并两个矩阵,每个矩阵具有两个列,并具有一个公共列?换句话说,我想要一个函数my_merge_cpp(mat1, mat2),该函数将使用以下R代码给出相同的结果:
mat1 = as.matrix(data.frame(x=1:5, y1=2:6)) ## an example
mat2 = as.matrix(data.frame(x=3:7, y2=3:7)) ## an example
as.matrix(merge(mat1, mat2, all=FALSE))
Run Code Online (Sandbox Code Playgroud)
我会用data.table。尝试使用更大的数据时,看到您用自家的Rcpp或RcppArmadillo解决方案击败了它,我会感到非常惊讶。
library(data.table)
mat1 <- data.table(x=1:5, y1=2:6) ## an example
mat2 <- data.table(x=3:7, y2=3:7) ## an example
mat1[mat2, on="x", nomatch=NULL]
Run Code Online (Sandbox Code Playgroud)
演示版
R> library(data.table)
R> mat1 <- data.table(x=1:5, y1=2:6) ## an example
R> mat2 <- data.table(x=3:7, y2=3:7) ## an example
R> mat1[mat2, on="x", nomatch=NULL]
x y1 y2
1: 3 4 3
2: 4 5 4
3: 5 6 5
R>
Run Code Online (Sandbox Code Playgroud)