rank () не оценивается должным образом при использовании с научным обозначением - PullRequest
0 голосов
/ 22 октября 2010

Я пытался упорядочить CSV-файл, но функция rank () действовала странно с числом с нотацией -E.

> comparison = read.csv("e:/thesis/comparison/output.csv", header=TRUE)  
> comparison$proxygeneld_full.txt[0:20]
[1] 9.34E-07    4.04E-06    4.16E-06    7.17E-06    2.08E-05    3.00E-05   
[7] 3.59E-05    4.16E-05    7.75E-05    9.50E-05    0.0001116   0.00012452 
[13] 0.00015494  0.00017892  0.00017892  0.00018345  0.0002232   0.000231775
[19] 0.00023241  0.0002666  
13329 Levels: 0.0001116 0.00012452 0.00015494 0.00017892 0.00018345 ... adjP
> rank(comparison$proxygeneld_full.txt[0:20])
[1] 19.0 14.0 16.0 17.0 11.0 12.0 13.0 15.0 18.0 20.0  1.0  2.0  3.0  4.5  4.5
[16]  6.0  7.0  8.0  9.0 10.0 
#It should be 1-20 in order ....

Кажется, здесь просто игнорируется нотация -E.Это нормально, если я не использую данные из файла

> rank(c(9.34E-07, 4.04E-06, 7.17E-06))
[1] 1 2 3

Я что-то упустил?Спасибо.

Ответы [ 2 ]

1 голос
/ 22 октября 2010

Я полагаю, у вас есть нечисловые данные в вашем CSV-файле.Что произойдет, если вы это сделаете?

as.numeric(comparison$proxygeneld_full.txt)

Если это приведет к цифрам, отличным от ожидаемых, у вас наверняка есть текст в этом столбце.

1 голос
/ 22 октября 2010

Да - $proxygeneld_full.txt[0:20] даже не числовой.Это фактор:

13329 Levels: 0.0001116 0.00012452 0.00015494 0.00017892 0.00018345 ... adjP

Таким образом, rank() ранжирует числовые коды, лежащие за представлением фактора, и "числа" E-0X сортируются после не-E чисел в уровнях.

Посмотрите на str(comparison), и вы увидите, что proxygeneld_full.txt является фактором.

Я изо всех сил пытаюсь повторить поведение, которое вы видите, с цифрами E в файле CSV.R правильно читает их как числовые.Проверьте CSV, чтобы убедиться, что в этом столбце нет никаких числовых значений или что цифры E не указаны в кавычках.

Ааа!снова посмотрим на уровни, которые вы цитируете: в конце кода, который вы показываете, скрывается adjP.Проверьте ваши данные еще раз, так как этот adjP находится там, где кто-то, и это заставляет R кодировать эту переменную как фактор, отсюда и поведение, которое вы видите при ранжировании, как я описал выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...