1

Rで1つのコードを書いています。最初に、データセットに空白の列を1つ作成しています。いくつかの条件に従って、その列に0と1の値を割り当てたいと思います。これが私のコードです

#Creating a empty column in the data file 
Mydata$final <- "";

#To assign 0,1 value in final variable
if(Mydata$Default_Config == "No" & is.na(Mydata$Best_Config)=="TRUE" & (Mydata$AlmostDefaultConfig!=1 | Mydata$AlmostDefaultConfig!=3)){
  Mydata$final <- 1
  }else{
  Mydata$final <- 0  
  }

そして、私はこのエラーが発生しています

Warning message:
In if (Mydata$Default_Config == "No" & is.na(Mydata$Best_Config) ==  :
  the condition has length > 1 and only the first element will be used

このエラーを修正するにはどうすればよいですか? 私を助けてください。前もって感謝します

4

2 に答える 2

0

別のアプローチは、Rの強制を利用することです。ベクトル化可能な条件のセットがあり、R は TRUE/FALSE を 1 / 0 に変換してくれるので、次のように記述できます。

Mydata$final <- (  (Mydata$Default_Config == "No") *( is.na(Mydata$Best_Config)=="TRUE") *  (Mydata$AlmostDefaultConfig!=1 +  Mydata$AlmostDefaultConfig!=3))  )

(わかりやすくするために余分な括弧が追加されています) . 私がそこでロジックを汚した場合はお詫び申し上げます。

編集:両方の辺がTRUEの場合、大きな数(「2」:-)が得られるため、ORの私のコードはうまく機能しません。に変更しますas.logical((Mydata$AlmostDefaultConfig!=1 + Mydata$AlmostDefaultConfig!=3))

于 2013-07-19T11:46:34.287 に答える