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 принимает 1 при X> 0 и принимает 0 при X = 0. Здесь я не могу написать код R для следующего выраженияЧтобы найти сумму, используя функцию индикатора?

(Z-1)*X+Z*Y 

Пожалуйста, помогите мне в этой проблеме. Спасибо.

+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, эти теги не имеют отношения к этому вопросу. Прочитайте отрывок тегов, прежде чем добавлять их к вопросам, пожалуйста. (И при редактировании, попробуйте удалить приветствия/цистерны у вас). – Tensibai

ответ

0

Вы можете определить функцию индикатора Z, используя функцию ifelse, где Z принимает 1 при X> 0 и принимает 0 при X = 0.

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

Большое спасибо @Arun kumar mahesh –

+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

Большое вам спасибо. –

Смежные вопросы