有时我们不仅要求行满足条件,而且需要对相邻的行进行比较,我想获得所需的行,以及它上面的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行
我知道这可以通过编写一个我自己的函数来处理,而且并不难。
我只是想知道是否有任何包关注于行的邻居,因为许多估计不仅需要行而且还需要其邻居
答案 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