ある病理のスコアで、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
なんでかなーと思ってググったら、下記に答えが。
I have a dataframe combi including two variables DT and OD. I have a few missing values NA in both DT and OD but not necessary the same record. I then try to replace missing values in DT with OD ...
つまり私の場合は、最初に "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)