子集行+上下文

时间:2013-02-07 18:22:35

标签: r subset

我无法找到一种简单的方法来在我想要选择的行周围添加一些上下文(n个相邻的行)。
我或多或少地尝试镜像grep的-C选项来选择data.frame的某些行。

前:

a= data.frame(seq(1:100))  
b = c(50, 60, 61)

假设我想在b中索引的行周围有2行的上下文;所需的输出应该是a的数据帧子集,具有行48,49,50,51,52,58,59,60,61,62,63

1 个答案:

答案 0 :(得分:4)

你可以这样做,但可能有一种更优雅的方式来计算指数:

a= data.frame(seq(1:100))  
b = c(50, 60, 61)
context <- 2
indices <- as.vector(sapply(b, function(v) {return ((v-context):(v+context))}))
a[indices,]

给出了:

 [1] 48 49 50 51 52 58 59 60 61 62 59 60 61 62 63

编辑:正如@flodel指出的那样,如果索引可能重叠,则必须添加以下行:

indices <- sort(unique(indices))