如何在R中将向量中的所有负值替换为0

时间:2016-01-20 21:59:19

标签: r vector

我有一个从50个元素的正态分布中随机生成的矢量

vector<-c(rnorm(50)) 

我想将所有负值更改为0,将正值更改为1

我使用了这个函数和索引但是我没有得到50个元素的向量

vector[ vector< 0 ] <- 1
vector[ vector> 0 ] <- 0

我该怎么办?

2 个答案:

答案 0 :(得分:4)

生成一些数据

x = rnorm(50)

然后

x = ifelse(x > 0, 1, 0)

x[x < 0] = 0 
x[x > 0] = 1

甚至更好

  as.numeric (x>0)

然而,由于标准法线对称约为0,为什么不直接通过

进行模拟
sample(0:1, 50, replace=TRUE)

答案 1 :(得分:0)

问题在于,在第一个查询中,您将所有小于0的值替换为大于零的值 所以诀窍是切换

vector[ vector< 0 ] <- 1
vector[ vector> 0 ] <- 0

进入

vector[ vector> 0 ] <- 0
vector[ vector< 0 ] <- 1

请注意,您也略微偏向0,但这应该只是边际