2012-12-16 54 views
1

超过2只列出了我一直在学习R编写了一个月,并在列表和dataframes一些困难。我无法弄清楚如何找到超过2个列表的交集。我创建了四个列表,其中包含姓名,性别,年龄,3部喜爱的电影,支持联合国,出生日期和直系家庭成员的一个月:比较R中

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]) 
+3

你会发现编程容易得多,如果你在第一时间使用正确的数据结构。在这里,您应该将所有数据存储在一个data.frame中。对于名称一个栏,一个是性别等 – flodel

+0

你是对的,但问题说:创建4所列出R中包含以下信息:姓名,性别等 – user1907822

+0

我希望有做正确的事部分信用。祝你的作业好运。 – flodel

回答

2

首先,我不认为单人list s为输入相应的数据结构的simplier方式你任务。他们都有相同的结构,这是一个指标,data.frame将是适当的。

虽然data.frame S能包含它们的元素列表里面,您的数据表明,以列表转化为规范化的关系数据库的表。在R中可以映射,为2个或3 data.frame S:

  • 个人数据
  • 3部最喜欢的电影:如果他们是有序的(第一,第二,第三选择),你可以使用的data.frame colums人表为此。如果没有,请将它们拉入带有人员和电影的列表data.frame
  • 对于亲戚的生日,我想这是意外,你的示例数据给出确切2它们的每个人。所以把它拉入另一个data.frame。

对于打猎重复,请看? table


编辑:wrt。要求建立一个listdata.frame s为list S IN R:

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

如果您使用数据框架和关系数据库组织框架,则sqldf库很可能会用于查找重复项以及在您的表上执行其他SQL查询(例如数据框) –