2012-06-02 34 views

回答

44

你沒有給出一個可重複的例子,但你的警告信息告訴你到底是什麼問題。

memb只有10的長度我猜dih_y2 $ MemberID的長度不是10的倍數。當使用==它會吐出一個警告,如果它不是一個多重讓你知道這可能不會做你期望的事情。 ==按元素檢查是否相等。我懷疑你想要做什麼,如果發現dih_y2$MemeberID的哪些元素也在向量memb。要做到這一點,你會想使用%in%運營商。

dih_col <- which(dih_y2$MemeberID %in% memb) 
16

當執行中的R 2個矢量之間的布爾比較中,「期望」是兩個矢量的長度相同,使R能夠依次比較每個對應元件。 R有一個被稱爲recycling的非常喜歡(或討厭)的功能,因此在很多情況下,如果你嘗試做一些R通常期望物體長度相同的東西,它會自動擴展或回收較短的對象強制兩個對象具有相同的長度。

如果較長的對象是較短的倍數,則相當於簡單地重複較短的對象多次。通常情況下,R程序員會利用這一點來更緊湊地完成任務,減少打字次數。

但是,如果它們不是倍數,R會擔心你可能犯了一個錯誤,也許並不意味着要進行這種比較,因此是警告。

用下面的代碼瀏覽自己:

> x <- 1:3 
> y <- c(1,2,4) 
> x == y 
[1] TRUE TRUE FALSE 
> y1 <- c(y,y) 
> x == y1 
[1] TRUE TRUE FALSE TRUE TRUE FALSE 
> y2 <- c(y,2) 
> x == y2 
[1] TRUE TRUE FALSE FALSE 
Warning message: 
In x == y2 : 
    longer object length is not a multiple of shorter object length 
相關問題