R 迭代过滤条件变化的数据帧

R 迭代过滤条件变化的数据帧,r,purrr,R,Purrr,我想根据过滤条件创建许多数据帧。我最近试图提高我的R技能,尤其是函数式编程方法 下面的reprex显示了一种获取我想要的内容的复制/粘贴方法——在基于数据帧中的列应用某些过滤条件后,要分析的各种数据帧。显然,对于任意多个过滤条件都不实用 library(tidyverse) df = tibble(a = rnorm(5000, mean = 500, sd = 20), b = rep(c('a', 'b', 'c', 'd'), 5000/4)) threshol

我想根据过滤条件创建许多数据帧。我最近试图提高我的R技能,尤其是函数式编程方法

下面的reprex显示了一种获取我想要的内容的复制/粘贴方法——在基于数据帧中的列应用某些过滤条件后,要分析的各种数据帧。显然,对于任意多个过滤条件都不实用

library(tidyverse)

df = tibble(a = rnorm(5000, mean = 500, sd = 20),
            b = rep(c('a', 'b', 'c', 'd'), 5000/4))

thresholds = c(400, 450, 500, 550)


df_400 = df %>% filter(a < 400)
df_450 = df %>% filter(a < 450)
df_500 = df %>% filter(a < 500)
df_550 = df %>% filter(a < 550)

库(tidyverse)
df=TIBLE(a=rnorm(5000,平均值=500,标准差=20),
b=代表(c('a','b','c','d'),5000/4))
阈值=c(400450500550)
df_400=df%>%过滤器(a<400)
df_450=df%>%过滤器(a<450)
df_500=df%>%过滤器(a<500)
df_550=df%>%过滤器(a<550)
我尝试过使用
map2
进行变更,但我不确定如何在数据帧的行上进行变更,也不确定如何根据数据帧的条件进行变更。我觉得我错过了一些简单的事情。

一种可能是:

lapply(thresholds, function(x) filter(df, a < x))

[[1]]
# A tibble: 0 x 2
# … with 2 variables: a <dbl>, b <chr>

[[2]]
# A tibble: 22 x 2
       a b    
   <dbl> <chr>
 1  440. c    
 2  448. c    
 3  445. d    
 4  443. b    
 5  443. a    
 6  448. d    
 7  435. a    
 8  438. b    
 9  447. c    
10  444. c    
# … with 12 more rows
lappy(阈值,函数(x)过滤器(df,a

如果你想完全用
tidyverse
,那么请看@Johan Rosa的精彩评论。

正如我在评论中所说的,这是使用base r和dplyr方法的答案

dplyr

map(阈值,~df%>%filter(a<.x))

基本r


lappy(阈值,函数(x){df[df[[“a”]

这可以做到
map(阈值,~df%>%filter(a<.x))
并使用lappy对这一个
lappy(阈值,函数(x){df[df[“a”]
我发现我在解决这个问题的尝试中误解了~符号。两个答案都很好。请随便做一个正式的“回答”,我会接受的,因为它符合整洁的语法。不管怎样,我今天晚些时候会结束这件事。