2016-04-06 5 views
2

私は、脳卒中の症候性または無症候性側の石灰化の量に関する研究プロジェクトを行っています。if-else関数の正しい使い方R

対症療法側は1(右)でも2(左)でもかまいません。すべての症例について、私は左手側と左手側の石灰化量を別々に計算しました。次に、石灰化の総量に関して両側(symp。vs asymp)を比較したいと思います。

私は、次のコードは正しかったthougt:

ds$totalcalcSymp <- if(ds$sympt_side==2) ds$totalcalcL else 
    (ds$totalcalcR) 

ds$totalcalcAsymp <- if(ds$sympt_side>1) ds$totalcalcR else 
    (ds$totalcalcL) 

しかし、上記のRコードは動作しないようです。症状の面では、totalcalcR(右辺)に似た値が得られます。そしてtotalcalcLの無症候性側値(左側)。

私はif文だけで作業を試みましたが、上記と同じ結果が得られました。問題は、私も受け取った警告メッセージに関連していますか?

the condition has length > 1 and only the first element will be used 

ストロークの症候性とasymptomic側への正しい側(totalcalcRまたはtotalcL)をリンクするための適切な解決策は何ですか?

ありがとうございました!

+0

てみ 'DS $ totalcalcSymp < - ifelse(DS $ sympt_side == 2を、DS $ totalcalcL、DS $ totalcalcR)'。 – Gopala

答えて

1

ifelse()を使用してみてください:

ds$totalcalcSymp <- ifelse(ds$sympt_side==2, ds$totalcalcL, ds$totalcalcR) 
+0

Arunは論理的に同等の2つの構成要素ではありませんか? –

+0

まず、うわー!どのような高速repsonse!最初のコードは、Akrunが言ったように動作しません。しかし、ifelse関数を使った2番目のコードがうまくいくようです!私はifelse関数はバイナリの結果でしか使えないので、連続変数(石灰化のボリューム)では使用できないと思っています。 – Kars

関連する問題