我有两个向量,都是尺寸为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
答案 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