R:过滤出现在较小向量中的较大向量的元素

R:过滤出现在较小向量中的较大向量的元素,r,dplyr,R,Dplyr,假设我们有一个数值向量。实际上,假设我们有一个由一列组成的数据帧 example = data.frame("column" = rnorm(10000, 10, 3)) 为了使用dplyr包的过滤功能,我们将把它作为数据帧处理 另外,假设我们有另一个长度较小的向量。这个特殊的向量仅仅是为了这个例子。它不一定是一个序列 numbers = 8:100 我想做的是保持较大向量的值等于较小向量的任何值,并丢弃那些不等于的值 很公平。过滤器功能可以做到这一点。除了我必须写下以下内容: filter

假设我们有一个数值向量。实际上,假设我们有一个由一列组成的数据帧

example = data.frame("column" = rnorm(10000, 10, 3))
为了使用dplyr包的过滤功能,我们将把它作为数据帧处理

另外,假设我们有另一个长度较小的向量。这个特殊的向量仅仅是为了这个例子。它不一定是一个序列

numbers = 8:100
我想做的是保持较大向量的值等于较小向量的任何值,并丢弃那些不等于的值

很公平。过滤器功能可以做到这一点。除了我必须写下以下内容:

filtered = dplyr::filter(example, column == numbers[1] | column == numbers[2] | ... | column == numbers[length(numbers)]) 
我必须为numbers向量的每个元素编写condition列==numbers[I]

执行此代码

filtered = dplyr::filter(example, column == numbers)
作为输出提供一个名为filtered的数据帧,该数据帧由一个没有行的列组成。没有行,因为示例数据帧的所有行都由标量组成,所以这些行都不等于整数向量

是否有一种更聪明的方法不需要我为数字向量的每个元素编写条件?

您在寻找:


过滤您可以使用运算符%in%检查您的值是否在向量中

代码:

一个以R为基数的选项

new_data <- old_data %>%
    dplyr::filter(column %in% numbers)
subset(example, column %in% numbers)