У меня есть огромный набор данных с несколькими столбцами, представляющими экспрессию данного гена в определенной c ткани. Набор данных выглядит следующим образом с 74 440 генами:
![Data sample](https://i.stack.imgur.com/UbNNx.png)
Я пытаюсь найти гены, которые имеют очень специфический c паттерн экспрессии и, следовательно, я Я использую несколько & & операторов в команде if в коде ниже. По сути, я пытаюсь найти гены, которые соответствуют точным значениям, которые я ввел в команду if. Любые гены, которые соответствуют этому критерию, будут добавлены в новый файл, который называется Ovaries_only.
Приведенный пример данных в точности показывает, как выглядит файл Excel, и строк намного больше, чем показано. Я пытаюсь увидеть, превышает ли значение в 18-м столбце 100, а остальные столбцы ниже заданного значения. Исходя из этого, я пытаюсь добавить всю строку, которая соответствует критериям, в новый файл.
Когда я запускаю код, я получаю сообщение об ошибке «Ошибка, если пропущено значение там, где необходимо ИСТИНА / ЛОЖЬ» а также несколько предупреждений «In if (col.names) d [[2L]] else NULL: условие имеет длину> 1, и будет использоваться только первый элемент»
Не могли бы вы сказать мне, что я делаю? неправильно.
counter = TRUE
i = 1
while (counter == TRUE) {
if( (data[i,3] < 10) && (data[i,4] < 10) && (data[i,5] < 10) && (data[i,6] < 5) && (data[i,7] < 5) &&
(data[i,8] < 5) && (data[i,9] < 5) && (data[i,10] < 5) && (data[i,11] < 5) && (data[i,12] < 5) &&
(data[i,13] < 5) && (data[i,14] < 5) && (data[i,15] < 5) && (data[i,16] < 5) && (data[i,17] < 5) && (data[i,18] > 100) && (data[i,19] < 50) ){
df = data[i, ]
write.table(df, "ovaries_only.csv", sep = ",", row.names = FALSE, col.names = !file.exists("ovaries_only.csv", append = TRUE))
i = i + 1
if (i == 74440){
counter == FALSE
}
}
else{
i = i+1
if (i == 74440){
counter == FALSE
}
}
}