我有一个数字向量:
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
。