6

我有一个数字向量:

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)
4

4 回答 4

12

您不需要newvector事先制作并将其用作ifelse导致错误的参数。

试试这个...

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

但更好的是把它矢量化......

newvector <- as.integer( p >= 0.5 )
于 2013-03-22T11:16:37.823 回答
5

只需使用:

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

的第二个和第三个参数ifelse不是表达式,而是要返回的值。

于 2013-03-22T11:14:54.887 回答
2

您也可以findInterval用于这种特殊情况:

findInterval(p, .5)
于 2013-03-22T11:18:34.400 回答
2

在这种情况下,您可以使用newvector<-round(p)而不是ifelse.

于 2013-03-22T11:21:24.587 回答