基于变量B选择变量A的向量

时间:2014-09-06 04:39:54

标签: r function if-statement for-loop subset

如何根据另一个向量中满足的条件从一个变量中获取元素向量?我这样做是为了能够绘制人口中的一部分。

我的尝试不起作用,导致NULL(空)向量:

a <- c(1,2,3,4,3,3,3,4,1,3,2,3) # Conditional values
b <- c(1,2,3,4,5,6,7,8,9,10,11,12) # Target values
df <- data.frame(a,b)

scissor <- function(x,n) {
  for (i in 1:12) {
    if (x[i,1] != n) {
      x[-i,] # Remove row that does not have value n
    }
  }
}

vector <- scissor(df,3)

1 个答案:

答案 0 :(得分:0)

你需要对你正在做的事情进行双重否定。

> b[!(a != 3)]
#[1]  3  5  6  7 10 12

但你可以为同样的结果做到这一点

> b[a == 3]
#[1]  3  5  6  7 10 12

使用数据框,它将是

> df$b[df$a == 3]
#[1]  3  5  6  7 10 12

仅适用于b个值,

> df[df$a == 3, ]
#   a  b
#3  3  3
#5  3  5
#6  3  6
#7  3  7
#10 3 10
#12 3 12

表示数据框。