R 如何使用字符向量对象调用矩阵中的列子集
我有一个列和行名称的数据矩阵,如下所示:R 如何使用字符向量对象调用矩阵中的列子集,r,matrix,subset,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" $
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"
...
我有一个对象,有多个列标题子集列表,例如:
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]
test您不希望构造一个R调用,将其作为字符串放入“[”,然后需要对其进行分析和计算。您希望放入一个本身就是字符向量的对象。请尝试以下操作:
test <- example.col_list[[1]] # note "[[" instead of "["
example.matrix[ , test]
test欢迎使用StackOverflow!您可以在一个小的测试数据帧上发布a,或者使用dput
吗?list[1]
返回一个列表而不是一个字符向量。您想要的是list[[1]]
。以这种方式进行子集设置很好(尝试m=data.frame(a=1:3,b=4:6,c=7:9);l=c(“a”,“b”);m[/code>),所以你的示例.matrix
或你的test
向量必须有所不同(我们只能告诉你,如果我们可以复制它会怎么样).哇,你们画得很快。我应该早点试试这个!双括号符号正是我所需要的。我是R新手,这是我第一次接触这个符号。非常感谢你们的帮助!