子列号由colname

时间:2016-01-06 18:45:03

标签: r submatrix

我有一个带有行和列名称的matrix,并希望将其缩减为submatrix某些行/列。指定的名称位于~20值的字符串向量中,而矩阵具有55.000 rownames805 colnames。我怎样才能在R中有效地做到这一点?

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

1 个答案:

答案 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-index(同名的colnames),矩阵中不存在,你会收到一个错误:

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

您可以找到以下指标:

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

您需要测试数据:

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