發現值I有一個數據幀x
:ř從間隔
begin end
1 1 3
2 5 6
3 11 18
和向量v <- c(1,2,5,9,10,11,17,20)
我想找到從向量是任何從數據幀間隔的元素的所有值。所以我想得到一個矢量c(1,2,5,11,17)
。這怎麼可能?
發現值I有一個數據幀x
:ř從間隔
begin end
1 1 3
2 5 6
3 11 18
和向量v <- c(1,2,5,9,10,11,17,20)
我想找到從向量是任何從數據幀間隔的元素的所有值。所以我想得到一個矢量c(1,2,5,11,17)
。這怎麼可能?
我們可以使用Map
來獲取序列相應之間,begin/end
值在list
,unlist
的list
和使用intersect
得到的元素共同既vector
小號
intersect(unlist(Map(`:`, x$begin, x$end)), v)
#[1] 1 2 5 11 17
要獲得逐行值上MARGIN
1
使用apply
與intersect
apply(df, 1, function(a) intersect(v, a[1]:a[2]))
#[[1]]
#[1] 1 2
#[[2]]
#[1] 5
#[[3]]
#[1] 11 17
或unlist
得到一個載體
unlist(apply(df, 1, function(a) intersect(v, a[1]:a[2])))
#OR
intersect(v, unlist(apply(df, 1, function(a) a[1]:a[2]))) #as commented by akrun
#[1] 1 2 5 11 17
我想你可以在'unlist'ing後調用'intersect' ' – akrun
你的間隔是否不重疊?參見'?findInterval' - 'v [findInterval(v,x $ begin)==(findInterval(v,x $ end)+ 1L)]' –