2014-03-30 57 views
0

我有兩個向量,兩個維度都是30000x1,所以只有一列和許多行。第一個矢量包含值,僅次於TRUE或FALSE。當另一個向量在R中爲TRUE時,保留向量值

我想保留vector1的所有行,其中同一行vector2等於TRUE。

我已經試過類似的組合:

res=apply(vector1,2,vector2) 
res=vector1(vector2) 
res=vector1[vector2] 

,但我不知道這一點。非常感謝您的幫助。

實施例:

vector1: 

123 
345 
667 

vector2: 
TRUE 
FALSE 
TRUE 

res: 
123 
667 

回答

0

這工作:

x= 1:3 
y = c(T,F,T) 
x 
#[1] 1 2 3 
y 
#[1] TRUE FALSE TRUE 
x[y] 
#[1] 1 3 
1

在R您可以索引到一個載體中使用包含布爾值,使得無論所述第二向量的長度相同的第二矢量包含TRUE你選擇第一個相應的元素。

所以,你的第三條道路對我的作品

v1=c(123,345,667) 
v2=c(TRUE,FALSE,TRUE) 
v1[v2] 

其輸出

[1] 123 667 

這是因爲v2包含在位置1和3 TRUE,所以v1[v2]相當於v1[c(1,3)]

有關索引的信息,請參閱point 1 of the introductory documentation。具體地,

[使用]邏輯向量索引。在這種情況下,索引矢量的長度必須與要從中選擇元素的矢量長度相同。索引向量中對應於TRUE的值被選擇並且對應於FALSE的值被省略

相關問題