矩阵A只是一个简单的矩阵,有n行和c列矩阵B只是一个简单的矩阵,有n行和d列
因此,A和B具有相同的行n,但列数不同,但有些列是相同的(列的名称和该列中的值)
我需要创建一个矩阵C,使C只有A和B的相同列.
A和B有colnames(),所以这就是我要做的但是我确信有更快的方法:
for (i in 1:ncol(A)){
if(colnames(A)[i] == colnames(B)[i]){
#do magic
}
}
Run Code Online (Sandbox Code Playgroud)
但这失败了2个地方,A)显然如果位置不同,那么需要"if(colnames(A)[i]在colnames(B)中)"和B)B中不在A中的元素被忽略; 总的来说这是一个糟糕的方法.
我使用的C =交叉(A,B)也不起作用; 它给了我不是我想要的任何建议?
谢谢
您需要调用intersect名称,并将结果用于索引:
a <- matrix(1:15, 5)
b <- matrix(21:35, 5)
colnames(a) <- c('A', 'B', 'C')
colnames(b) <- c('A', 'C', 'D')
n <- intersect(colnames(a), colnames(b))
cbind(a[,n],b[,n])
## A C A C
## [1,] 1 11 21 26
## [2,] 2 12 22 27
## [3,] 3 13 23 28
## [4,] 4 14 24 29
## [5,] 5 15 25 30
Run Code Online (Sandbox Code Playgroud)
我看到现在的问题是,当名称一致时,列值是相同的.因此,仅需要使用名称的交集来索引其中一个矩阵.要么:
a[,n]
## A C
## [1,] 1 11
## [2,] 2 12
## [3,] 3 13
## [4,] 4 14
## [5,] 5 15
Run Code Online (Sandbox Code Playgroud)