R有没有办法以简单的方式获取所需的行及其邻居

时间:2017-11-24 06:04:44

标签: r dataframe

有时我们不仅要求行满足条件,而且需要对相邻的行进行比较,我想获得所需的行,以及它上面的n行和/或它下面的n行。

更具体地说,假设条件给我第3,6,7行

我希望第1,2,3,4,5行比较3 需要排4,5,6,7,8来比较6 和第5,6,7,8,9行比较7

在消除重复后,我得到第1,2,3,4,5,6,7,8,9行

我知道这可以通过编写一个我自己的函数来处理,而且并不难。

我只是想知道是否有任何包关注于行的邻居,因为许多估计不仅需要行而且还需要其邻居

1 个答案:

答案 0 :(得分:0)

我找到了方法(自己编写函数),但是如果有人知道任何针对此的软件包请告诉我

将数字扩展为以此值为中心的向量2,考虑边界情况,默认情况下第一行为1而我们没有到达结尾

getAdjacentNum = function(x,lowerbound = 1,upperbound = x+2){
start = x - 2
if (x - lowerbound == 1)
  start = x - 1
if (x == lowerbound)
  start = x
end = x + 2
if (upperbound - x == 1)
end = x + 1
if (upperbound == x)
  end = x
result = seq(from = start,to = end,by = 1)
return(result)
}

向量化此函数

getAdjacentNumV = Vectorize(getAdjacentNum,SIMPLIFY = FALSE)

结合结果并处理重复

getAdjacentIndex = function(index){
  unique(unlist(getAdjacentNumV(index)))
}

示例:

getAdjacentIndex(c(1,5,29))
[1]  1  2  3  4  5  6  7 27 28 29 30 31