我一直在学习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])
答案 0 :(得分:2)
首先,我不认为单人list
是适合您任务的数据结构。它们都具有相同的结构,这是data.frame
适合的指标。
虽然data.frame
可以在其元素中包含列表,但您的数据建议将列表转换为规范化关系数据库的表。您可以将其映射到R:
data.frame
s
data.frame
列。如果没有,请将他们拉入额外的data.frame
,其中包含列人和电影。要查找重复项,请查看? table
。
编辑:wrt。构建list
:data.frame
的要求是R中的list
:
> a <- data.frame (person = "John Doe", gender = "female")
> a
person gender
1 John Doe female
> is.list (a)
[1] TRUE