如何将矢量转换为0和1

时间:2015-09-26 16:11:39

标签: r

zerone <- function(a) {  if (a>0)    {
  a<-1
  print(a) } else if (a==0) { print(0) }else {FALSE} }

嗨,使用上面的函数我可以将任何0和正数转为1和0,但我不能将向量转换为1和0向量。例如c(3,8,10,0)至c(1,1,1,0)。我该如何修改我的功能。谢谢

1 个答案:

答案 0 :(得分:4)

逻辑索引(v1 > 0)可以通过包裹+强制转换为二进制。 TRUE元素更改为1,FALSE更改为0。

+(v1 > 0)
#[1] 1 1 1 0

其他强制方式包括

(v1 > 0) + 0L

或者

(v1 > 0) * 1

如果我们需要一个功能

zerone <- function(a) {
  +(a > 0)
 }

zerone(v1)
#[1] 1 1 1 0

数据

v1 <-  c(3, 8, 10, 0)