R изменяет мой список строк символов с «na» на слова как пропущенные значения (например: BDNA3 -> NA). Как с этим бороться? - PullRequest
0 голосов
/ 11 февраля 2020

Я борюсь с R уже 2 дня, не находя решения!

Вот моя проблема:

  • У меня есть список символов, извлеченный из одного фрейма данных: annotation$"SYMBOL"

  • Я хотел бы привязать его к другому фрейму данных, называемому «матрицей», и присвоить им имена строк.

  • Я извлек столбец, связал его без проблем. Тем не менее, я понял, что, как только это было сделано, изменение их на имена строк не работает, потому что ~ 5000 генов / 15000 затем изменяются как «NA»

  • Я понимаю, что на самом деле это все гены с «NA» в их символах, которые рассматриваются как «пропущенные значения»

  • Я пытаюсь изменить их as.character(annotation$"SYMBOL"), но это не меняет ....

ЗДЕСЬ:

X=as.character(annotation$"SYMBOL")

summary(X)
   Length     Class      Mode 
    16978 character character  
unique (unlist (lapply (as.character(annotation$"SYMBOL"), function (x) which (is.na (x))))) 
[1] 1
Y=na.exclude(X)
summary(Y)
   Length     Class      Mode 
     9954 character character 

U=na.exclude(annotation$"SYMBOL")
Error in `$<-.data.frame`(`*tmp*`, "SYMBOL", value = c("SCYL3", "C1orf112",  : 
  replacement has 9954 rows, data has 16978

И я знаю, что они заменяют все гены "NA" в своих именах как NA ....

X

У кого-нибудь есть идеи, как go через это?

Например, номер 11 и номер 15 на этом изображении удаляются, когда я использую функцию "na.omit" ... .

1 Ответ

0 голосов
/ 11 февраля 2020

Чтобы установить NA значения, вы должны использовать код df[df == "NA"] <- NA. Я использовал это с вашим набором тестовых данных и дал желаемые результаты. Затем вы можете использовать функцию na.omit() на вашем df, чтобы удалить теперь установленные данные NA. У меня нет рабочего кода от вас, поэтому я предоставлю схему того, как должен выглядеть ваш код:

df <- data.frame(lapply(df, as.character), stringAsFactors = FALSE)
df
     X1       X2
1   1    SCYL3
2   2 C1orf112
3   3      FGR
4   4      CFH
5   5    STPG1
6   6   NIPAL3
7   7      AK2
8   8    KDM1A
9   9    TTC22
10 10     ST7L
11 11  DNAJC11
12 12     FMO3
13 13     E2F2
14 14   CDK11A
15 15     NADK
16 16    CSDE1
17 17    MASP2
df[df == "NA"] <- NA

Функция is.na(df) вернет FALSE для всех результатов. Если вы добавляете какие-либо данные NA, вы можете опустить эту строку, используя na.omit(df) сейчас.

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