2014-03-19 37 views
1

我想在R中創建一個指示變量Z,即如果我有一些事件A,我想讓Z給出1的結果(如果A爲真),如果A是假的,則返回0 。 我試過這個:在R中寫入指示函數

Z=0 
if(A==(d>=5 && d<=10)) 
    { 
    Z=1 
    } 
    else 
    { 
    Z=0 
    } 

但這不起作用。我也在想我可以嘗試寫一個單獨的函數調用指標:

indicator = function() 

任何建議將是真正的幫助,謝謝

+0

可能的複製[R中的Indikator函數](http://stackoverflow.com/questions/20096514/indikator-function-in-r) –

回答

3

你可以很容易地寫這樣的事情

indicator<-function(condition) ifelse(condition,1,0)

ifelse可用於矢量,但它在單個邏輯值(TRUE或FALSE)上可以很好地工作。

+0

謝謝,這有很多幫助! – user3438924

+1

另外1 *(條件)可以做同樣的事情,它更短(雖然有點難以閱讀)。 –

-1

沒有必要定義A,只是測試條件。 另外,請記住&&&在R中有不同用途(請參閱R - boolean operators && and ||瞭解更多詳細信息),所以也許這是您問題的一部分。

if (d>=5 & d<=10) 
    { 
    Z <- 1 
    } 
    else 
    { 
    Z <- 0 
    } 

或者,如其他答案使用ifelse建議:

z <- ifelse((d>=5 & d<=10), 1, 0) 
+0

非常感謝,我現在就開始工作! – user3438924

2

布爾FALSE/TRUE可以強制轉換爲01,然後乘以:

Indicator<-function(x, min=0, max=Inf) 
    { 
     as.numeric(x >= min) * as.numeric(x <= max) 
    }