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

3

我有一个包含50个元素的正态分布随机生成向量

vector<-c(rnorm(50)) 

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

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

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

我该如何继续进行?


3
为什么不直接使用sample(0:1,50,replace=T)呢? - Eric Fail
2个回答

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)

2
在我看来,as.numeric(x > 0) 应该是最简单的。 - David Arenburg

0
问题在于第一个查询中,您将所有小于0的值替换为大于零的值,所以诀窍是切换。
vector[ vector< 0 ] <- 1
vector[ vector> 0 ] <- 0

进入

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

请注意,您也略微偏向于0,但这只应该是微不足道的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接