2017-02-23 20 views
-1

私はRの新人ですので、前もって私の無知を許してください。警告:引数は数値ではありません

私はこのようなデータセットを持っています。 jetleg.datは私のデータセットです。

treatment phaseshift 
control  0.53 
control  0.36 
    light  -0.78 
    light  -0.86 

治療とフェイズシフトの平均値を取得する必要があります。

警告メッセージ:

私は計算を行う

control <- jetlag.dat[jetlag.dat$treatment == 'control',]$percent 
light <- jetlag.dat[jetlag.dat$treatment == 'light',]$percent 

mean(control) 
mean(light) 

は、私は、この通知を受け取るmean.defaultで (コントロール):引数には、数値または論理的ではありません。

NA返します

私はコントロールとライトが数字ではないことを理解していますが、私は計算でそれを説明していると思いました。私はこれの前にこれをして、それが働いた。どんな助けもありがとう。ありがとうございました。

+0

再現コードを渡せますか? http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

答えて

0

表示されないpercentという名前の列を参照しています。私はそれが$phaseshiftであると仮定します。

control <- jetlag.dat[jetlag.dat$treatment == 'control',]$phaseshift 
light <- jetlag.dat[jetlag.dat$treatment == 'light',]$phaseshift 

mean(control) 
mean(light) 

これでも同じエラーが発生する場合は、as.numericにラップしてみてください。

mean(as.numeric(control))

0

ここはあなたの問題であり、ほとんどの構文のようです。

変数がphaseshiftの場合は、$percentを先に呼び出します。

第二に、$percentまたは$phaseshiftニーズブラケット

前になるようにし、最後に、jetlag.dat$treatment == "control"文の後に任意のカンマがあってはなりません。ここで

はあなたのコードの改訂版であり、それは動作します:

df <- data.frame(treatment = c("control", "control", "light", "light"), 
      phaseshift = c(0.53, 0.36, -0.78, -0.86)) 

control <- df$phaseshift[df$treatment == "control"] 
light <- df$phaseshift[df$treatment == "light"] 

control_mean <- mean(control) 
light_mean <- mean(light) 

・ホープこのことができます!

関連する問題