2011-06-28 6 views
1

マイRコードは次のとおりです。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. 

誰もが私の問題を解決するために私を助けてもらえますか?

+5

再現可能な例(実際のデータまたはその一部)は素晴らしいでしょう。しかし、あなたのResponse_EPは1つの値しか保持していないようです(おそらくレスポンダだけがありますか?) –

+0

あなたの問題が何であるかはわかりません。これがエラーではなく警告である場合、コードは実行され、結果が生成されます。結果は期待通りではありませんか?サンプルデータと期待される結果を投稿してください。 – Andrie

答えて

12

いくつかの試行錯誤の末、私はあなたの問題を再現することができました。

しかし、Rのwarningerrorの間に非常に重要な違いがあると言って始めます。問題を報告するときには、2つの間を明確に区別してください。あなたが存在しないレベルで再ラベルデータにfactor()を言っているので、

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 

このエラーが発生します。私は5つのレベルしか含まない変数に対して10個のラベルを指定しました。これは、ラベルとレベルが一致しないことを意味します。

最初は、Rは、レベルを決定しましょう、と単純にパラメータを指定せずにfactor(x)を呼び出すことです:

は、この問題を解決するには、2つの方法があります。 (推測では、これはあなたのコードで行われているべきものと考えられます。):

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

labelsfactor(x)levelsを指定しない呼び出すことです:

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) 
関連する問題