Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.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_List - Fatal编程技术网

在r中使用相同元素对列表中的向量进行计数

在r中使用相同元素对列表中的向量进行计数,r,list,R,List,我有一个大约8000个向量的列表,我想知道这8000个向量中有多少个重复,但是每个向量中元素的顺序可能不同 例如: list <- c() list[[1]] <- c(1,2,3) list[[2]] <- c(2,1,3) list[[3]] <- c(3,2,1) list[[4]] <- c(4,5) list[[5]] <- c(5,4) list[[6]] <- c(1,2,3,5) list我们创建一个函数,将vector作为参数('v

我有一个大约8000个向量的列表,我想知道这8000个向量中有多少个重复,但是每个向量中元素的顺序可能不同

例如:

list <- c()
list[[1]] <- c(1,2,3) 
list[[2]] <- c(2,1,3)
list[[3]] <- c(3,2,1)
list[[4]] <- c(4,5)
list[[5]] <- c(5,4)
list[[6]] <- c(1,2,3,5)

list我们创建一个函数,将
vector
作为参数('val'),然后使用
sapply
list
中循环,检查
是否所有的
val
都是
%在%
的“x”中,以及
求和
逻辑的
向量`

f1 <- function(lst, val) sum(sapply(lst, function(x) all(val %in% x)))
f1(list, c(1, 2, 3))
[#1] 3

f1(list, c(4, 5))
#[1] 2
f1
library(tidyverse)
图书馆(gtools)

你是否需要
length(unique(list))
同样,如果你需要所有的副本,那么
sum(duplicated(lst)| duplicated(lst,fromLast=TRUE))
在某种意义上,但是我想要某种函数告诉我哪个列表被复制了多少次,在上面的例子中它将是
c(1,2,3)=3
或类似的内容您显示的不是列表列表而是向量列表您有输入错误:
list
应该是第一行的
list
是的,谢谢。我试图让它重现,但那部分却漏掉了。所以实际上这一半起作用了。。当向量包含更多元素时,我不会得到额外的计数,例如,我已经对向量进行排序,然后使用==而不是%in%。这是我现在唯一能想到的办法。如有其他解决方案,我们将不胜感激。
library(tidyverse)
library(gtools)

get_perm <- function(v) {
  m <- permutations(n = length(v), r = length(v), v = v, set = F)
  m[order(c(m))]
}

all <- map(list, get_perm)

unique <- map(list, get_perm) %>% unique()

res_vec <- c()
element <- c()

for(i in seq_along(unique)) {
  element[[i]] <- unique[[i]] %>% unique() %>% paste(collapse = ",")
  res_vec[[i]] <- all %in% unique[i] %>% sum()
}

tibble(
  elements = unlist(element),
  numbers = res_vec
)
# A tibble: 3 x 2
  elements       numbers
  <chr>          <int>
1 1,2,3              3
2 4,5                2
3 1,2,3,5            1