2013-11-25 245 views
1

我對R相對比較陌生,我無法弄清楚我的代碼是如何工作的。我有一個荷蘭所有城市的數據集,我只想列出名爲b的列表中的城市。如果我使用df [i]在數據框中選擇一個數字,它也包含級別。沒有關卡會起作用嗎?誤解for循環中的if語句

DF包含荷蘭的所有直轄市名稱和 b爲整形的直轄市

df <- mun_neth$GM_NAAM 
b <- list(gem_her$Nieuwe.gemeente) 
for(i in df){ 
    a <- df[i] 
    if(a in b){ 
    print(a) 
}} 
+0

你的代碼有幾個錯誤。你可能想要'mun_neth $ GM_NAAM [mun_neth $ GM_NAAM%in%gem_her $ Nieuwe.gemeente]'? – Roland

+0

作爲一般規則:關閉的人,請評論爲什麼這個不清楚,所以作者有機會編輯他的問題。顯然,並不是每個人都認爲這個問題不清楚。恕我直言,問題,答案和評論確實繪製出一幅相當清晰的圖畫。 – flodel

回答

3

正確的語法將列表(仔細閱讀每一行,並與你進行比較。)

df <- mun_neth$GM_NAAM 
b <- gem_her$Nieuwe.gemeente 
for(a in df){ 
    if(a %in% b){ 
    print(a) 
}} 

但是看看intersect,這樣你就可以在一次通話中完成整個循環的工作:

intersect(df, b) 
+0

感謝您的快速反應。 Intersect作品以及Roland在評論中的作品。但for循環不起作用,實際上這也是我之前嘗試過的。由於後面的增加我想遍歷城市,所以留在for循環中。非常感謝你已經非常有幫助,但是有進一步的建議嗎? – Zuenie

+0

如果您有因素,請嘗試在'as.character()'內部包裝'a'和/或'b'。 – flodel

+1

等待,爲什麼'b'是一個列表而不是一個向量?嘗試做'b < - gem_her $ Nieuwe.gemeente'。我編輯了我的答案。 – flodel