比较R中的2个以上列表

时间:2012-12-16 12:37:43

标签: r

我一直在学习R编程语言一个月,并且在列表和数据框架方面遇到了一些困难。我无法弄清楚如何找到两个以上列表之间的交集。我创建了四个列表,其中包含姓名,性别,年龄,3个最喜欢的电影,对联合国的支持,出生日和直系亲属的月份:

x<- list("Corinna Neubach", "female", 24, list("Film1","Film2","Film3"), TRUE,list("31.05",  "19.12"))
z<- list("Yasmin Ritschl","female", 21, list("Film6","Film7","Film8"), TRUE, list("20.03", "10.12"))
a<- list("Stefan Braun", "male", 23, list("Film6","Film7","Film8"),TRUE,list("25.06", "15.12"))
y<- list("Melissa Okay", "female", 23, list("Film3","Film4","Film5"), TRUE,list("31.05", "10.12"))

我想查看四个列表中是否有共享生日或姓名。 首先,我用“Reduce”编写了一个代码,但它没有提供我想要的解决方案。 然后,我尝试了相交,但我认为应该有一个更简单的方法来做到这一点

intersect(x[[6]],y[[6]])
intersect(x[1],y[1])
intersect(x[[6]],z[[6]])
intersect(x[1],z[1])
intersect(y[[6]],z[[6]])
intersect(y[1],z[1])
intersect(x[[6]],z[[6]])
intersect(x[1],z[1])
intersect(a[[6]],x[[6]])
intersect(a[1],x[1])
intersect(a[[6]],z[[6]])
intersect(a[1],z[1])
intersect(a[[6]],y[[6]])
intersect(a[1],y[1])

1 个答案:

答案 0 :(得分:2)

首先,我不认为单人list是适合您任务的数据结构。它们都具有相同的结构,这是data.frame适合的指标。

虽然data.frame可以在其元素中包含列表,但您的数据建议将列表转换为规范化关系数据库的表。您可以将其映射到R:

中的2或3 data.frame s
  • 人员数据
  • 最受欢迎的3部电影:如果订购(第1,第2,第3选择),您可以使用人员表的data.frame列。如果没有,请将他们拉入额外的data.frame,其中包含列人和电影。
  • 对于亲戚的出生日期,我猜你的例子数据不小心为每个人提供了2个。所以把它拉进另一个data.frame。

要查找重复项,请查看? table


编辑:wrt。构建listdata.frame的要求是R中的list

> a <- data.frame (person = "John Doe", gender = "female")
> a
    person gender
1 John Doe female
> is.list (a)
[1] TRUE