Фильтрация матрицы по тому же значению в R

У меня матрица 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> 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)
}

Что-то не так, я думаю, в случае если. Кто-нибудь может мне помочь? Заранее спасибо.


person Fab    schedule 23.05.2018    source источник
comment
Вы хотите сохранить только строки, для которых все значения ниже порогового значения?   -  person sindri_baldur    schedule 23.05.2018
comment
Я думаю, вам нужно max вместо min в вашем apply заявлении. Это то, что вы получали на @snoram?   -  person Joseph Wood    schedule 12.08.2018


Ответы (1)


Ваше решение сработало для меня, но, возможно, я неправильно создал data.frame. Вы можете сделать это за 1 шаг, с помощью вашего метода или за 2 шага, где вы создаете столбец, в котором сохраняется минимальное значение, а затем фильтруете в соответствии с этим столбцом.

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,]
person SeGa    schedule 23.05.2018
comment
Нет, потому что столбцы - это образцы. Столбца p не существует. - person Fab; 23.05.2018
comment
Не могли бы вы включить небольшой пример my_matrix? Так было бы намного проще;) - person SeGa; 23.05.2018
comment
Добавлено в посте. - person Fab; 23.05.2018
comment
вы также можете загрузить str(my_matrix)? Может быть, числовые столбцы не числовые, а множители? - person SeGa; 23.05.2018
comment
Это первая строка: data.frame ': 1014 obs. из 100 переменных: $ TCGA.A7.A0CE.01A.11R.A00Z.07: число 0.001006 0.00072 0.000854 0.253661 0.000865 - person Fab; 23.05.2018