我有一个包含列名和行名的数据矩阵,如下所示:
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个子集,因此不可能进行手动解决方法。我需要以某种方式嵌套这是一个循环或在函数内。谢谢!
答案 0 :(得分:2)
你不想构建一个R调用,它被放入&#34; [&#34;作为一个字符串,然后需要进行解析和评估。您想要放置一个字符向量本身的对象。试试这个:
test <- example.col_list[[1]] # note "[[" instead of "["
example.matrix[ , test]