如何获取包含两个其他值之间的值的数据帧的行?

Jad*_*ine 2 r range dataframe

所以我想在data.frame的列中找到值,这些值在定义的值范围内:

  example
 [1] 6 2 4 3 5 1
 pos
 [1] 1 3 2
Run Code Online (Sandbox Code Playgroud)

我现在想得到以下语句的BOTH为TRUE的示例值,这样我只得到介于pos - 1和之间的值pos +1:

if(example < pos - 1)
if(example > pos + 1)
Run Code Online (Sandbox Code Playgroud)

现在我的任务的真正价值在data.frame中.如何提取包含这些值并构建新pos的完整行 data.frame.

该示例的预期输出将是:

result
[1] 2 3 1
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Dav*_*urg 6

设置最小和最大阈值,然后将每个元素与它们进行比较

maxind <- max(pos + 1)
minind <- min(pos - 1)
Run Code Online (Sandbox Code Playgroud)

然后

example[sapply(example, function(x) x > minind & x < maxind)]
## [1] 2 3 1
Run Code Online (Sandbox Code Playgroud)

或者,类似地

example[example > minind & example < maxind]
## [1] 2 3 1
Run Code Online (Sandbox Code Playgroud)

或使用 data.table

library(data.table)
example[between(example, minind, maxind, incbounds = FALSE)]
## [1] 2 3 1
Run Code Online (Sandbox Code Playgroud)