2014-02-27 48 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