根据向量'p'中的值,我想将另一个向量中的值设置为0或1。 我尝试了以下
newvector=rep(0,length(p))
newvector=ifelse(p>=0.5,newvector=1,newvector=0)
但是这会引发错误,即ifelse有未使用的参数
矢量p
c(0.691401225261269, 0.433129612442971, 0.715983054119369, 0.886747655276408,
0.768369966075636, 0.619451618025444, 0.747447691612602, 0.787480458130569,
0.29095065207117, 0.703299386664627, 0.72613890310703, 0.244542050906673,
0.424358969255879, 0.244542050906673, 0.405127250273614, 0.365573918723265,
0.277863840689181, 0.656827737910484, 0.762318455515624, 0.839076103987831,
0.337670440659204, 0.781335609699773, 0.815504546491645, 0.671220524010401
)
答案 0 :(得分:10)
您不需要事先制作newvector
并将其用作ifelse
的参数导致错误。
试试这个......
newvector <- ifelse( p>=0.5 , 1 , 0 )
但更好的只是做矢量化......
newvector <- as.integer( p >= 0.5 )
答案 1 :(得分:5)
只需使用:
newvector <- ifelse(p>=0.5,1,0)
ifelse
的第二个和第三个参数不是表达式,而是要返回的值。
答案 2 :(得分:2)
您还可以针对此特定情况使用findInterval
:
findInterval(p, .5)
答案 3 :(得分:2)
在这种情况下,您可以使用newvector<-round(p)
代替ifelse
。