Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.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 如果存在于=,如何删除公共元素。>;5个数据帧中的3个_R_Dataframe_Store - Fatal编程技术网

R 如果存在于=,如何删除公共元素。>;5个数据帧中的3个

R 如果存在于=,如何删除公共元素。>;5个数据帧中的3个,r,dataframe,store,R,Dataframe,Store,根据前面的问题,并进行进一步的统计分析, 我想知道是否可以删除>=3个数据帧中出现的公共峰值 a <- data.frame(ID = c("1", "2", "3", "4", "5"), peak = c("peak1", "peak2", "peak3", "peak4", "peak10&quo

根据前面的问题,并进行进一步的统计分析, 我想知道是否可以删除>=3个数据帧中出现的公共峰值

a <- data.frame(ID = c("1", "2", "3", "4", "5"), peak = c("peak1", "peak2", "peak3", "peak4", "peak10"))
b <- data.frame(ID = c("1", "2", "3", "4"), peak = c("peak1","peak3", "peak20", "peak21"))
c <- data.frame(ID = c("1", "2", "3"), peak = c("peak1", "peak5", "peak3"))
d <- data.frame(ID = c("1", "2", "3", "4", "5", "6"),peak = c("peak1", "peak3", "peak7", "peak8", "peak11", "peak12"))
e <- data.frame(ID = c("1", "2", "3"), peak = c("peak1", "peak3",  "peak9"))

a如果每个数据集中的'peak'值是唯一的,则将数据集绑定到一个数据集中(
bind_rows
),获取'peak'的
count
filter
其中'n'小于3的行和
拉取这些'peak'元素

library(dplyr)
to_keep <- bind_rows(a, b, c, d, e, .id = 'grp') %>%
             count(peak) %>% 
             filter(n < 3) %>% 
             pull(peak)
或者将对象保存在
列表中
并从中删除子集

library(purrr)
lst1 <- lst(a, b, c, d, e) %>%
           map(~ .x %>%
                  filter(peak %in% to_keep))
库(purrr)
1%
地图(~.x%>%
过滤器(峰值%以%为单位保留))

在base R中,您可以执行以下操作:

my_list <- list(a = a, b = b, c = c, d = d, e = e)
y <-table(do.call(rbind, my_list)) < 3
list2env(lapply(my_list, function(x) subset(x, y[peak])), .GlobalEnv)
my_list另一个基本R选项

lst <- list(a, b, c, d, e)
v <- names(Filter(function(x) x < 3, table(unlist(sapply(lst, `[[`, "peak")))))
lapply(
  lst,
  function(x) {
    subset(x, peak %in% v)
  }
)

谢谢@ThomaslsCoding,但它显示了至少3个数据帧中的公共峰值,但它并没有将它们从数据帧中移除original@lana对不起,我没有完成。现在你可以看看它是否适合你了。谢谢@onyanbu,但是当我在我的原始数据上运行它时,我发现这个错误
y=2^31个元素
工作得很好,谢谢!
my_list <- list(a = a, b = b, c = c, d = d, e = e)
y <-table(do.call(rbind, my_list)) < 3
list2env(lapply(my_list, function(x) subset(x, y[peak])), .GlobalEnv)
lst <- list(a, b, c, d, e)
v <- names(Filter(function(x) x < 3, table(unlist(sapply(lst, `[[`, "peak")))))
lapply(
  lst,
  function(x) {
    subset(x, peak %in% v)
  }
)
[[1]]
  ID   peak
2  2  peak2
4  4  peak4
5  5 peak10

[[2]]
  ID   peak
3  3 peak20
4  4 peak21

[[3]]
  ID  peak
2  2 peak5

[[4]]
  ID   peak
3  3  peak7
4  4  peak8
5  5 peak11
6  6 peak12

[[5]]
  ID  peak
3  3 peak9