gpt4 book ai didi

返回包含 r 中预定范围之外的数据的列列表

转载 作者:行者123 更新时间:2023-12-04 11:01:15 24 4
gpt4 key购买 nike

为了仅针对感兴趣的列过滤 data.frame,我需要在此 data.frame 中查找包含特定范围之外的数据的列。
让 data.frame 成为

df<-data.frame(x1=c(1,5,9),x2=c(10,20,30),x3=c(20,100,1000))
ranges<-data.frame(y1=c(3,8),y2=c(10,20), y3=c(15,1250))

作为输出,我想要一个返回列名的列表:"x1","x2"

我尝试了以下操作,但代码仅在“范围”包含下面指定的所有数字时才有效,并且如果找到数字则匹配。不幸的是,这不是我需要的。
ranges<-c(15:300,10:20)
df.l<-colnames(df)[sapply(df,function(x) any(x %in% ranges))]

有任何想法吗?
谢谢!

最佳答案

如果 'ranges' 是一个 data.frame 或列表,一个选项是

names(which(unlist(Map(function(x, y) any(!(x >= y[1] & x <= y[2])), df, ranges))))
#[1] "x1" "x2"

或者使用反向逻辑
names(which(unlist(Map(function(x, y) any(x < y[1]| x > y[2]), df, ranges))))

或者在 tidyverse 中,
library(purrr)
library(dplyr)
library(tibble)
map2(df, ranges, ~ between(.x, .y[1], .y[2]) %>% `!` %>% any) %>%
enframe %>%
unnest(cols = value) %>%
filter(value) %>%
pull(name)
#[1] "x1" "x2"

数据
ranges <- data.frame(y1 = c(3, 8), y2 = c(10, 20), y3 = c(15, 1250))

关于返回包含 r 中预定范围之外的数据的列列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58780955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com