R:按列名组合矩阵
矩阵A只是一个有n行和c列的简单矩阵 矩阵B只是一个有n行和d列的简单矩阵 因此,A和B具有相同的行n,但列数不同 但是,有些列是相同的(列的名称和该列中的值) 我需要创建一个矩阵C,这样C只有a和B的相同列 A和B都有colnames(),所以我想这样做,但我相信有一种更快的方法:R:按列名组合矩阵,r,matrix,R,Matrix,矩阵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 } } 但是这失败了2个地方,A)显然
for (i in 1:ncol(A)){
if(colnames(A)[i] == colnames(B)[i]){
#do magic
}
}
但是这失败了2个地方,A)显然如果位置不同,那么需要“if(colnames(A)[i]在colnames(B)]”和B)忽略B中不在A中的元素;所以总的来说,这是一个糟糕的方法
我使用了C=intersect(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
您需要对名称调用
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
您正在寻找
合并
?或cbind
?你能给出一个你想要的可复制的例子吗?你想要a中的列具有相同的名称,但可能不同的内容,作为B中的列吗?无论如何,请在%colnames(B)中尝试此colnames(A)%?或cbind
?你能给出一个你想要的可复制的例子吗?你想要a中的列具有相同的名称,但可能不同的内容,作为B中的列吗?不管怎样,在%colnames(B)
中试试这个colnames(A)%s这很好,你将名称交叉并将其用作列列表,coocool:)thx这很好,你将名称交叉并将其用作列列表,coocool:)thx