2016-01-20 23 views
3

我具有由正態分佈50個元素如何由0中的R取代在矢量中的所有負值

vector<-c(rnorm(50)) 

我想改變爲0和所有負值正值爲1

隨機生成的矢量

我用這個功能,但是索引然後我不跟50個元素

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

我應該如何繼續獲得矢量?

+3

爲什麼不簡單'抽樣(0:1,50,替換= T)'? –

回答

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)'應該是最簡單的一個IMO –

0

的問題是,在第一個查詢您替換所有值由值較大的零 所以關鍵是要切換

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

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

請注意,您也略小0偏向0但這應該只是邊際化