Что означает фактор (0)? - PullRequest
1 голос
/ 02 мая 2019

Я занимаюсь исследованиями в области иммунологии и хочу определить имена генов, которые соответствуют определенным требованиям.

ifng5p <- df$Gene[which(as.numeric(df$Prop1) <= df[df$Genes == "Ifng", "Prop1.5p"] 
& as.numeric(df$Prop1) >= df[df$Genes== "Ifng", "Prop1.5m"] & as.numeric(df$Prop1) <= df[df$Genes == "Ifng", "Prop1.5p"] 
& as.numeric(df$Prop1) >= df[df$Genes=="Ifng", "Prop1.5m"])]

Я ожидаю названия генов (которые находятся в столбце «Ген»)выводится, и вместо этого мой вывод выглядит следующим образом:

factor(0)
49041 Levels:  0610005C13Rik 0610006L08Rik 0610009B22Rik 0610009E02Rik 0610009L18Rik ... Zzz3

1 Ответ

5 голосов
/ 02 мая 2019

factor(0) означает вектор типа factor длиной 0. Вы получаете это, потому что ваше подмножество не возвращает никаких значений. Вы можете увидеть пример этого с набором данных iris:

# There are no cats in `iris` so it returns a vector of length 0
iris$Species[iris$Species ==  'cat']

factor(0)
Levels: setosa versicolor virginica

Это потому, что iris$Species == 'cat' равно FALSE для всех значений, поэтому никакие значения не возвращаются. Функция table хорошо подсчитывает каждое значение в векторе, и мы можем использовать его, чтобы увидеть, что iris$Species == 'cat' дает нам 150 FALSE значений и 0 TRUE:

table(iris$Species == 'cat')

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