2016-01-06 73 views
-1

我有一個matrix與行和col名稱,並希望將其減少到submatrix某些行/ colnames。指定名稱的值爲~20的字符串向量,而矩陣的值爲55.000 rownames805 colnames。我如何在R中有效地做到這一點?通過colname的子矩陣

IFNGenes = c('TIMM10','UBE2L6','MX1','IF16','IFI44L','IFIT3','ISG15','OAS1','RSAD2','IFI44','OAS3','DOX58','HERC5','BATF2','LIPA','RSAD2.1') 

subMatrix = theMatrix[,IFNGenes] 
Error in theMatrix[, IFNGenes] : subscript out of bounds 
+3

怎麼樣一個小重複的例子?我想你可以使用'row/column'索引。 – akrun

+0

代碼在上面,我試過並得到一個下標錯誤。難道一些基因不在名稱中? –

回答

4

如果我理解你的問題的權利,你正在尋找的東西是這樣的:

x <- matrix(1:100, 10) 
rownames(x) <- LETTERS[1:10] 
colnames(x) <- letters[1:10] 
x[c("C", "F", "A"), c("d", "b", "e")] 

你也可以這樣做:

x[c("C", "F", "A"), c(4, 2, 5)] 

如果使用rowname指數(同爲在矩陣中不存在,你會得到一個錯誤:

> x[c("C", "F", "XX"), c(4, 2, 5)] 
Error in x[c("C", "F", "XX"), c(4, 2, 5)] : subscript out of bounds 

你可以找到這樣indizes如下:

r <- c("C", "F", "XX") 
r[which(! r %in% rownames(x))] 

爲你的數據,你必須測試:

IFNGenes[which(! IFNGenes %in% colnames(theMatrix))] 
+0

是的,我沒有意識到你可以在R中用整數和列/ rowname混合索引。 –

+0

感謝jogo,我正在尋找哪個語句 –