我的数据结构如下:
listA
[[1]]
1 2 4 5 6 8 9 10 12 24
[[2]]
4 8 9 12 26 35 46
listB
[[1]]
5 8 10 12 24 35 42 56
[[2]]
26 35 46 59 68 72
我希望将两个列表各自子集中的公共元素数量存储在单独的列表中
我期望得到以下结果”
list_AB
[[1]]
5 #No. of common elements between listA [[1]] and listB[[1]]
[[2]] #No. of Common elements between listA [[2]] and listB[[2]]
3
我编写了以下代码来获取答案,但是效果不好:
k<-c(1:2)
for (i in k){
for (j in 1:length(listA)){
for (k in 1:length(listB)){
intersect_G[[i]]<-intersect(listA[[j]],listB[[k]])}}}
答案 0 :(得分:2)
基于在“ listA”和“ listB”的相应元素之间找到共同元素并获取每个元素的Sales_LW =
CALCULATE(SUM(Sales_Table[gms]),
FILTER(Sales_Table,Sales_Table[weeks] = WEEKNUM(MAX(Query1[WeekendDate]))-1 &&
Sales_Table[year] = YEAR(MAX(Query1[WeekendDate])))
的描述
length
或使用lst <- Map(intersect, listA, listB))
lengths(lst)
#[1] 5 3
中的pmap
purrr
或使用library(tidyverse)
pmap(list(listA, listB), ~ intersect(..1, ..2) %>%
length)
循环
for
或使用out <- vector('list', length(listA))
for(i in seq_along(listA)) out[[i]] <- length(intersect(listA[[i]], listB[[i]]))
purrr
library(purrr)
map2(listA, listB, ~ length(intersect(.x, .y)))
#[[1]]
#[1] 5
#[[2]]
#[1] 3
答案 1 :(得分:0)
#Create data
A <- list(seq(1:10), seq(10,20,2))
B <- list(seq(1:5), seq(100,110,2))
#Unlist both lists and check to see which elements are shared.
new_list <- list(intersect(unlist(A), unlist(B)))
new_list
[[1]]
[1] 1 2 3 4 5