我有一个矩阵,其中的colnames是样本名称,我创建了一个colnames的向量。
我还有一个样本名称的向量,我需要从矩阵中进行子集化,我发现它与矩阵的同名不同。
要对矩阵进行子集化,我需要找到矩阵中的哪些列对应于我需要的样本。
为了说明这一点:
colnames <- c("A","B","C","D","E","F","G","H","I")
sample_names<- c("B","D","I")
我需要一种方法让R返回位置信息,以便为示例样本名称&#34; B&#34;,&#34; D&#34;,&#34; I&#34;, colnames的位置是:[1] 2 4 9
答案 0 :(得分:0)
示例数据:
> m=matrix(rep(1:4,3),ncol=4)
> colnames(m)<-c("A","C","D","B")
> m
A C D B
[1,] 1 4 3 2
[2,] 2 1 4 3
[3,] 3 2 1 4
> vec<-c("A","B")
> vec
[1] "A" "B"
要回答您的确切问题,请使用which
,它会在逻辑向量中返回TRUE值的索引。
> which(colnames(m)==vec)
[1] 1 4
但是,由于您的目标似乎是对矩阵进行分组,因此只需直接使用样本名称向量就可以得到它:
> m[, vec]
A B
[1,] 1 2
[2,] 2 3
[3,] 3 4