R logo

ある病理のスコアで、Brainstem (BS) が NA の項目があったので、

"Midbrain(MB) と Pons(Pons) と Medulla (Med) のどこかで 1 以上のスコアがあったら、BS = 1, それ以外だったら BS = 0"

としたくて、下記のようにコードを書いた。

z <- which(is.na(Data_all$BS))
Data_all$BS[z] <- ifelse(Data_all$MB>= 1 | Data_all$Pons >= 1 | Data_all$Med >= 1, 1, 0)

そしたら、下記エラーメッセージが。

number of items to replace is not a multiple of replacement length

 

なんでかなーと思ってググったら、下記に答えが。

つまり私の場合は、最初に "BS が NA の箇所" のみを指定していたので、

補完してほしいベクターの数と補完用のベクターの数が一致していなかった、という事。

なるほど!と思い、下記のようにコードを修正したら、エラーが解消された。

z <- which(is.na(Data_all$BS) & !is.na(Data_all$MB) | !is.na(Data_all$Pons) | !is.na(Data_all$Med))
Data_all$BS[z] <- ifelse(Data_all$MB >= 1 | Data_all$Pons >= 1 | Data_all$Med >= 1, 1, 0)