如何使用字符向量对象调用矩阵中的列子集

时间:2012-08-30 19:04:08

标签: r matrix subset

我有一个包含列名和行名的数据矩阵,如下所示:

     Col1  Col2  Col3 ...
Row1 0.1   0.2   0.4  ...
Row2 1.8   13.1  0.2  ...
Row3 8.0   9.2   9.1  ...
...  ...   ...   ...

我有一个包含多个列标题子集列表的对象,如下所示:

$list1
 [1] "Col1"       "Col2"      "Col13"     "Col56"     "Col267"    "Col300"
 [7] "Col301"     

$list2
 [1] "Col4"       "Col6"      "Col7"      "Col54"     "Col199"     "Col203"

...

我想抓住原始矩阵的一个子集,只包含每个列表中的列。如果我明确指定列标题,似乎我可以这样做,例如:

example.matrix[,c("Col4","Col6","Col7","Col54","Col199","Col203")]

但是如果我创建一个匹配该字符向量的数据对象,它就不起作用:

test <- as.character(example.col_list[1])
          #^this prints to terminal as 
          #"c("Col4","Col6","Col7","Col54","Col199","Col203")" 
example.matrix[,test]

这会产生Error: subscript out of bounds。在使用子集函数,使用子集函数,尝试查找列的索引(使用哪些和匹配函数)后,似乎没有任何工作。这一切似乎都取决于我无法解释每个列名列表。我知道我可能会遗漏一些简单的东西,但经过长时间的努力,很难在SO或谷歌搜索中找到答案,任何想法?

如果它有帮助,我这样做是为每个列的子集制作一个数字,并且有大约10k个子集,因此不可能进行手动解决方法。我需要以某种方式嵌套这是一个循环或在函数内。谢谢!

1 个答案:

答案 0 :(得分:2)

你不想构建一个R调用,它被放入&#34; [&#34;作为一个字符串,然后需要进行解析和评估。您想要放置一个字符向量本身的对象。试试这个:

test <- example.col_list[[1]]  # note "[[" instead of "["

example.matrix[ , test]