我正在尋找R中的指示函數,即如果函數返回1,如果向量中元素的值大於0並返回零,如果元素的值在一個向量小於0.R中的指示函數
我需要在向量中的所有元素上使用這個函數,返回一個只有零和1的新向量。
謝謝。
我正在尋找R中的指示函數,即如果函數返回1,如果向量中元素的值大於0並返回零,如果元素的值在一個向量小於0.R中的指示函數
我需要在向量中的所有元素上使用這個函數,返回一個只有零和1的新向量。
謝謝。
如果我能夠正確理解你,那麼你想要改變整個數據框,假設我可以建議你使用像下面這樣的應用,其中df是你的數據框。
apply(df,2,function(x)ifelse((x>0),1,0))
您還可以,如果它像下面只有一個矢量東西使用:
x <- c(-2,3,1,0)
y <- ifelse(x>0,1,0)
print(y)
[1] 0 1 1 0 #Output
希望這有助於
超酷;謝謝! –
有多種方式,最小的按鍵之一:
Ivec <- 0+(vec>0)
保存幾個擊鍵:as.numeric(vec>0)
。我猜想ifelse(x>0,1,0)
-approach如果適用於大型矢量或用於仿真,會稍微慢一些。也可以使用:
Ivec <- 1*(vec>0)
哇,+ 1,我知道0+技巧,真棒 – PKumar
的I
功能在R,稱爲禁止口譯/轉換的對象起作用,可以用於此目的。例如,該線以下返回值,其中X = {0,1,2,3,4,5}的函數I(X < 4):
> I(0:5 < 4)
[1] TRUE TRUE TRUE TRUE FALSE FALSE
就R TRUE
和FALSE
可以治療如1和0,但如果你堅持你的輸出正是這些數字,只需將你的I
函數包裝成as.numeric
。
爲什麼你使用Asis函數...不使用它返回相同的對象('0:5 <4')。當你使用它時,返回的對象現在是'AsIs'類(這可能會產生意想不到的下游結果) – user20650
還有R中
指示符(X,最小,最大)
-Inf和INF仍然是有效的值的內置指示器功能。
正常的'>'運算符有什麼問題? –
'as.numeric(x> 0)'應該有效。 –