【发布时间】:2015-05-04 18:11:39
【问题描述】:
所以我想在 data.frame 的列中查找值,这些值在定义的值范围内:
example
[1] 6 2 4 3 5 1
pos
[1] 1 3 2
我现在想获取以下两个语句都为 TRUE 的示例值,因此我只得到介于 pos - 1 和 pos +1 之间的值:
if(example < pos - 1)
if(example > pos + 1)
现在我的任务的真正价值在 data.frame 中。如何提取包含这些值的完整行并构建新的 pos
data.frame.
该示例的预期输出为:
result
[1] 2 3 1
提前致谢!
【问题讨论】:
-
您说
example只包含一列,那么为什么要使用example[, 4]选择不存在的列?你为什么不为初学者提供一个可重复的例子?我有一种感觉,在尝试重现您的错误时,您会首先了解它的来源。 -
pos只有 6 个值,所以它只是被回收。您不是在与pos中的所有值进行比较,而是在example[, 4]中的每个值与pos中的一个(回收的)值进行比较。您是否尝试将example[, 4]中的 each 值与pos中的 each 值进行比较? -
我认为您正在寻找类似
indx <- sapply(example[, -4], function(x) any(x < pos + 25) | any(x > pos - 25))的东西。然后就做example[indx, -4] -
所提供示例的预期输出是什么?
-
所以
example[sapply(example, function(x) any(x > pos - 1) & any(x < pos + 1))]应该可以工作。4不满足第二个条件,所以不应该在那里