当R中的另一个向量为TRUE时,保持向量的值

时间:2014-03-30 20:43:07

标签: r vector

我有两个向量,都是尺寸为30000x1,所以只有一列和多行。第一个向量包含值,仅次于TRUE或FALSE。

我想保持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

2 个答案:

答案 0 :(得分: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对应的值

答案 1 :(得分:0)

这有效:

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