矢量和矩阵的名称交集

时间:2016-05-10 19:06:05

标签: r matrix vector

我有一个叫做sl

的角色
[1]   a     b     c

和一个名为returns.ts的矩阵。

     a     b     d
[1]  2     3     4
[4]  1     2     3
[7]  4     3     2

我想得到字符和矩阵的名称与矩阵中的数据的交集,如下所示:

      a     b
 [1]  2     3
 [3]  1     2
 [5]  4     3

我尝试过使用代码

r.sl <- returns.ts[intersect(names(returns.ts), names(sl))]

但是,创建的对象显示为空。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

您需要做的就是将列表元素的名称传递给矩阵的j以返回所需的列:

returns.ts[, names(sl)]

检查sl是否为列表,而不是矢量 - class(sl)

答案 1 :(得分:1)

test <- matrix(1:12,ncol = 3)
colnames(test) <- c('a','b','d')
sl <- setNames(c(10,20,40),c('a','b','c'))
test[,which(colnames(test) %in% names(sl))]