簡體   English   中英

根據限制將數字向量轉換為二進制 (0/1)

[英]Convert numeric vector to binary (0/1) based on limit

我有一個數字向量:

p = c(0.69, 0.43, 0.72, 0.62, 0.29, 0.7)

我希望將這些值與限制進行比較,例如 0.5。 如果值等於或大於截止值,則結果應為 1。小於 0.5 的值應為 0。

我試過ifelse ,但它錯誤:

newvector = rep(0, length(p))
newvector = ifelse(p >= 0.5, newvector = 1, newvector = 0)
# Error in ifelse(p >= 0.5, newvector = 1, newvector = 0) : 
#   unused arguments (newvector = 1, newvector = 0)

您不需要事先制作newvector並將其用作ifelse的參數會導致錯誤。

試試這個...

newvector <- ifelse( p>=0.5 , 1 , 0 )

但更好的是將其矢量化......

newvector <- as.integer( p >= 0.5 )

只需使用:

newvector <- ifelse(p>=0.5,1,0)

ifelse的第二個和第三個參數不是表達式而是要返回的值。

對於這種特殊情況,您還可以使用findInterval

findInterval(p, .5)

在這種情況下,您可以使用newvector<-round(p)而不是ifelse

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM