R Предупреждение: ошибка в факторе - PullRequest
1 голос
/ 28 июня 2011

Мой код R:

means_log_adj <- aggregate(lab_data[,delta_touse], 
    by = list(
        factor(mydata_adj$Response_EP, labels = c("non_responder", "responder")), 
        factor(mydata_adj$sex,labels = c("male","female")), 
        factor(mydata_adj$timepoint,labels = c("baseline","wk1","wk2","EP"))),
    mean)

Warning message: 
> mistake in factor
> (mydata_adj$Response_EP, labels =
> c("non-responder", "responder")):
> invalid labels; length 2 should be 1
> or 0.

Может ли кто-нибудь помочь мне решить мою проблему?

1 Ответ

13 голосов
/ 28 июня 2011

После некоторых проб и ошибок мне удалось воспроизвести вашу проблему.

Но позвольте мне начать с того, что существует очень важное различие между warning и error в R. Когда вы сообщаетепроблема, не забудьте четко различать эти два.

x <- letters[1:5]
factor(x, labels=LETTERS[1:10])

Error in factor(x, labels = LETTERS[1:10]) : 
  invalid labels; length 10 should be 1 or 5

Эта ошибка возникает из-за того, что вы говорите factor() переименовать данные с несуществующими уровнями.Я указал 10 меток для переменной, которая содержит только 5 уровней.Это означает, что метки и уровни не совпадают.

Есть два способа исправить это:

Первый - позволить R определить уровни и просто вызвать factor(x) без каких-либо параметров.,(Возможно, это именно то, что вы должны были сделать в своем коде.):

factor(x)
[1] a b c d e
Levels: a b c d e

Второй - вызвать factor(x) и указать levels, а не labels:

factor(x, levels=letters[1:10])
[1] a b c d e
Levels: a b c d e f g h i j

Вы не предоставили пример данных, поэтому мы не можем протестировать решение.Но попробуйте следующий код:

means_log_adj <- aggregate(lab_data[,delta_touse], 
    by = list(
        factor(mydata_adj$Response_EP,), 
        factor(mydata_adj$sex), 
        factor(mydata_adj$timepoint)),
    mean)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...