2012-12-16 78 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查詢(例如數據框) –