从R

时间:2018-07-06 01:04:01

标签: r

我的数据结构如下:

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]])}}}

2 个答案:

答案 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