2014-02-27 87 views
0

所以我有一個座標列表,我在上面執行了一個循環。基本R,如何使用函數的結果填充矢量

X <- matrix(stats::rnorm(100), ncol = 2) 
hpts <- chull(X) 

chull會返回類似於「[1] 1 3 44 16 43 9 31 41」的內容。然後,我想通過另一個向量來多個X來僅返回chull結果集中的X值。因此,例如[-2.1582511,-2.1761699,-0.5796294] * [1,0,1,...] = [-2.1582511,0,-0.5796294 ...]將是結果。我只是不知道如何正確地填充第二個向量。

Y <- matrix(0, ncol = 1,nrow=50) #create a vector with nothing 
# how do I fill vector y with a 1 or 0 based on the results from chull what do I do next? 
X[,1] * Y 
X[,2] * Y 

感謝,

回答

1

要返回的X是在結果集的hpts只值,使用

> X[hpts] 
## [1] 2.1186262 0.5038656 -0.4360200 -0.8511972 -2.6542077 -0.3451074 1.0771153 
## [8] 2.2306497 

我看它像 「X這樣HPTS」,或者「在X中的hpts的值「

當然,這些X的值與你的不同,因爲我的值爲rnorm

要獲得的1和0標誌着一個矢量效果,請使用

> Y <- ifelse(X[,1] %in% X[hpts], 1, 0) 
> Y 
## [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 
## [44] 0 1 0 0 1 0 1 
+0

我需要的結果是在大小50。 X [hpts]只有8個大小? – KrisErickson

+0

如果沒有50個值,該怎麼辦?使用「NA」或零等? –

+0

零,如果該行號不在chull的結果中,我想要另一個只有[1,0,1 ...]的矢量,其中0表示。它不必是一個1,如果你可以很容易地把實際價值放在這裏,這將節省幾個步驟。 – KrisErickson