我有一个矩阵1014 * 100。我只需要p.value<的行。 0.05所以我试图以不同的方式过滤我的矩阵。
TCGA.A7.A0CE.01A.11R.A00Z.07 TCGA.A7.A0CE.11A.21R.A089.07
hsa04014 0.0010059007 0.0009569162
hsa04010 0.0007198587 0.0006481671
hsa04015 0.0008544083 0.0006697753
第一种方式:
threshold<-0.05
matrix2<-my_matrix[apply(my_matrix,1,min)<threshold,]
输出是矩阵463 * 100但是某些行具有p.value&gt; 0.05。
第二种方式:
matrix2 <-NULL
for(i in 1:1014){
n<- my_matrix[[i]]
for(i in 1:100){
if(n[[i]] < 0.05){
n[[i]]<-i
}
else{
n[[i]] <- NA
} }
matrix2<- rbind(matrix2, n)
}
有一些错误,我想在if。有没有人可以帮助我?提前谢谢。
答案 0 :(得分:1)
您的解决方案对我来说很好,但也许我没有正确创建data.frame。 您可以使用您的方法一步完成,也可以在两个步骤中创建一个列,其中存储最小值,然后根据该列进行过滤。
my_matrix <- data.frame(
TCGA.A7.A0CE.01A.11R.A00Z.07 = c(0.051, 0.09, 0.04),
TCGA.A7.A0CE.11A.21R.A089.07 = c(0.06, 0.01 , 0.067)
)
row.names(my_matrix) <- c("hsa04014","hsa04010","hsa04015")
threshold<-0.05
## In 1 step (your solution):
my_matrix[(apply(my_matrix,1,min)) < threshold,]
## In 2 steps:
my_matrix$min <- as.numeric(apply(my_matrix,1,min))
my_matrix[my_matrix$min < threshold,]