r语言 - 根据极限将数字向量转换为二进制(0/1)



我有一个数字向量:

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

最新更新