-3
我有一個大的文本文件,32000行和51列。基於python或R中的列過濾文本文件的行
行是基因,列是樣本。每個細胞包含每個樣品中每個基因的值。
我想刪除那些有10個以上值小於或等於2的基因(行)。例如,0 1 2 3 4 5
只有三個小於或等於2的值,所以應該保留。
我用下面的代碼來做到這一點,但在運行之後我仍然我有許多行具有多於10個值小於或等於2:
output_file = open("results.txt", 'w')
for line in open(input_filepath, 'r'):
values = line.split(' ')
if len([value for value in values[1:] if float(value) <= 2]) <= 10:
output_file.write(line)
這是第一線和其他的人都喜歡它:
ENSG00000000003.10 17.83196398 69.91920499 279.89049 95.61821179 74.80702449 122.5556208 144.8049767 68.68034587 73.67798573 89.95469195 81.85856972 126.9733354 64.93879738 29.4107548 73.03579221 116.0315804 67.90288741 27.57208264 62.52823427 99.03510023 9.39397698 61.45042154 117.1267932 63.15944291 319.4942754 142.3189945 59.98822761 173.5042114 67.29941051 97.12375332 37.94666697 137.0865621 91.06779336 71.44276982 79.58113909 221.2371603 38.62588269 122.5556208 111.12162 260.6636398 184.7700916 100.6786557 97.59881552 264.2982916 161.1062423 92.55084782 64.8034559 117.3666154 89.70704223 51.63439938
正好。例如在特定行中至少有10列,其值在0和2之間 – ali
因此我想刪除這些行 – ali
您顯示的代碼看起來是正確的,因此很難從此處進行調試。爲了幫助您進行調試,我建議將'len'表達式粘貼到變量中,並暫時將其與'line'一起發送到輸出文件,以便您可以看到代碼**認爲** len表達式是 - 然後你可以深入瞭解爲什麼**它認爲,在這一點上是不清楚的。 –