Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何使用字符向量对象调用矩阵中的列子集_R_Matrix_Subset - Fatal编程技术网

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新手,这是我第一次接触这个符号。非常感谢你们的帮助!