2016-11-24 5 views
0
X=c(5.3552,5.0212,11.1375,10.6883,0.0000,1.4795,0.0000,0.0000,0.8646,8.5751,4.8460,1.3602,20.3108,0.0000,20.883,0.000,0.000,11.3210,7.707,0.000) 
Y=c(2.746,2.776,2.785,2.788,2.777,2.778,2.777,-2.0798,2.546,-1.3201,0.905,2.777,-11.7463,-0.2909,-0.2417,0.1206,2.7777,2.3524,1.7479,1.5524) 

私は指標関数を定義します。Zは次のように与えられます。ZはX> 0のときに1をとり、X = 0のときには0をとります。 ここで私はこの問題で私を助けてください、次の式インジケータ機能を使用して合計を見つけるには?

(Z-1)*X+Z*Y 

のためのRコードを記述することができません。 ありがとうございます。

+0

'(as.numeric(X> 0) - 1)* X + as.numeric(X> 0)* Y'?しかし、(Z-1)* Xは常に0に等しくなります(X> 0、Z -1 = 0、X = 0ならば(Z-1)* X = 0)ので、 'as.numeric (X> 0)* Y'で十分でしょう。あなたの数式は確かですか? – etienne

+0

@arunkumarこの質問は、関数を書くことや、sumという関数を使うことと関係がありません。これらのタグは、この質問とは無関係です。質問に追加する前に、抜粋タグを読んでください。 (そして、編集するときは、greetings/tankを削除してください) – Tensibai

答えて

0

あなたは、Z 1は、x> 0をとり、x = 0のとき0をとるifelse関数を使用してインジケータ関数Zを定義することができます。

Z <- ifelse(X>0 , 1 , 0) 

(Z-1)*X+Z*Y 

[1] 2.7460 2.7760 2.7850 2.7880 0.0000 2.7780 0.0000 0.0000 2.5460 -1.3201 0.9050 2.7770 -11.7463 0.0000 -0.2417 
[16] 0.0000 0.0000 2.3524 1.7479 0.0000 
+0

大変ありがとう@アルン・クマール・マシェフ –

+0

私はupvoteを得ることができます/あなたは私の答え@sarojaを受け入れることができます –

0

これはいかがですか?

Z = rep(0, length(X)) 
Z[X>0] = 1 
Z 
#[1] 1 1 1 1 0 1 0 0 1 1 1 1 1 0 1 0 0 1 1 0 
(Z-1)*X+Z*Y 
#[1] 2.7460 2.7760 2.7850 2.7880 0.0000 2.7780 0.0000 0.0000 2.5460 -1.3201 0.9050 2.7770 -11.7463 0.0000 -0.2417 0.0000 0.0000 
#[18] 2.3524 1.7479 0.0000 
+0

ありがとうございました。 –

関連する問題