質問: ``` kin<-c(-3,5,7,-6) kin1<-kin[0<=kin] #0以上 kin2<-kin[0>kin] #0未満 y<-c(1,2,3,4) kihon<-data.frame(y) #データフレーム作成 ``` プラスとマイナスを条件分岐で計算 ``` for(i in 1:length(kin){ if(kin1){ pu<-data.frame(kin1*10) #プラスの計算 colnames(pu)<-c("point") #ポイント名の変更 } if(kin2){ mi<-data.frame(kin2*30) #マイナスの計算 colnames(pu)<-c("point") #ポイント名の変更 } } pumi<-rbind(pu,mi) #プラスとマイナスのデータを連結 mydata<-data.frame(y,pumi) #データフレーム完成 ``` このようにコードを書くと > > There were 50 or more warnings(use warning() to see the first 50) > > > 上記のような赤メッセージが表示されます。 あと、mydataのデータフレームはpumiのマイナスとプラスを分けて別の方法で計算してから、もう一度同じ列に入れなおしているので、yのデータのような1,2,3,4の並びになりません。 データフレームと上の赤メッセージはどのように対処すればよいでしょうか。
回答: なさりたいのはこういう事でしょうか? ``` kin <- c(-3, 5, 7, -6) y <- c(1, 2, 3, 4) kihon <- data.frame(y, point = NA) #データフレーム作成 # プラスとマイナスを条件分岐で計算 for(i in 1:length(kin)){ if(kin[i] >= 0){ kihon[i, "point"] <- kin[i] * 10 #ポイント名の変更 } if(kin[i] < 0){ kihon[i, "point"] <- kin[i] * 30 #ポイント名の変更 } } kihon #データフレーム完成 ``` 参考までに、以下のやり方のほうがシンプルでわかりやすいかと思います。 ``` kin <- c(-3, 5, 7, -6) kihon <- data.frame(kin, point = ifelse(kin >= 0, kin * 10, kin * 30)) kihon ```