我有一个从50个元素的正态分布中随机生成的矢量
vector<-c(rnorm(50))
我想将所有负值更改为0,将正值更改为1
我使用了这个函数和索引但是我没有得到50个元素的向量
vector[ vector< 0 ] <- 1
vector[ vector> 0 ] <- 0
我该怎么办?
答案 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,但这应该只是边际