Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一个R函数来过滤一个数据帧,其中保留了所有匹配值的列?_R_Dataframe - Fatal编程技术网

是否有一个R函数来过滤一个数据帧,其中保留了所有匹配值的列?

是否有一个R函数来过滤一个数据帧,其中保留了所有匹配值的列?,r,dataframe,R,Dataframe,我有一个大数据框,有5行,但有100k列。我希望保留列中的所有值都匹配的列 这是数据帧的示例 > df Mouse JAX00000010 JAX00000010r UNCHS000003 JAX00240606 JAX00240613 JAX00240636 UNCHS000005 1 407 BF BF BF BF BF BF BF 2 410

我有一个大数据框,有5行,但有100k列。我希望保留列中的所有值都匹配的列

这是数据帧的示例

> df
  Mouse JAX00000010 JAX00000010r UNCHS000003 JAX00240606 JAX00240613 JAX00240636 UNCHS000005
1   407          BF           BF          BF          BF          BF          BF          BF
2   410          BH           BH          BH          BH          BH          BH          BH
3   426          BD           BD          BD          BD          BD          BD          BD
4   447          BC           BC          BC          BC          BC          BC          BC
5    87          BF           BF          BF          BF          BF          BF          BF
我想保留所有具有相同值的列,例如'BB'。我没有遇到过这样的函数,尽管我确信它很简单。谢谢你的帮助

试试看

df[, sapply(df, function(x) length(unique(x)) == 1]
或者使用
过滤器

Filter(function(x) length(unique(x)) == 1, df)
试一试

或者使用
过滤器

Filter(function(x) length(unique(x)) == 1, df)
在R基中:

# Your data
df <- read.table(header = TRUE, text = "
Mouse JAX00000010 JAX00000010r UNCHS000003 JAX00240606 JAX00240613 JAX00240636 UNCHS000005
1   407          BF           BF          BF          BF          BB          BF          BF
2   410          BH           BH          BH          BH          BB          BH          BH
3   426          BD           BD          BD          BD          BB          BD          BD
4   447          BC           BC          BC          BC          BB          BC          BC
5    87          BF           BF          BF          BF          BB          BF          BF")

# Get cols
get.cols <- which(apply(df[,-1] == "BB", 2, all))
df[,c(1, get.cols + 1)]
#  Mouse JAX00240613
#1   407          BB
#2   410          BB
#3   426          BB
#4   447          BB
#5    87          BB
#您的数据
基面R中的df

# Your data
df <- read.table(header = TRUE, text = "
Mouse JAX00000010 JAX00000010r UNCHS000003 JAX00240606 JAX00240613 JAX00240636 UNCHS000005
1   407          BF           BF          BF          BF          BB          BF          BF
2   410          BH           BH          BH          BH          BB          BH          BH
3   426          BD           BD          BD          BD          BB          BD          BD
4   447          BC           BC          BC          BC          BB          BC          BC
5    87          BF           BF          BF          BF          BB          BF          BF")

# Get cols
get.cols <- which(apply(df[,-1] == "BB", 2, all))
df[,c(1, get.cols + 1)]
#  Mouse JAX00240613
#1   407          BB
#2   410          BB
#3   426          BB
#4   447          BB
#5    87          BB
#您的数据

dfA
purrr
进近:

library(purrr)
df %>% keep(~ length(unique(.x)) == 1)

注意-您可以使用
discard
df%>%discard(~length(unique(.x))==1)
A
purr
方法:

library(purrr)
df %>% keep(~ length(unique(.x)) == 1)

注意-您可以使用
discard
df%>%discard(~length(unique(.x))==1)

感谢您的快速回答。我使用了@JasonAizkalns的purrr解决方案,因为我的数据帧大小的过滤函数花费了太长的时间。感谢您的快速回答。我使用@JasonAizkalns的purrr解决方案,因为对于我的数据帧大小,过滤函数花费的时间太长。