2013-07-09 39 views
1
fn <- function(D, e) { 
    for(i in 1:nrow(D)) { 
    if(D[i,1] == e) { 
     print("y") 
    } 
    } 
} 

fn(events, "a") 

問題:events是一個2×n矩陣。如果不是"a",我想通過c("a","b","c")e,那麼如何檢查if(D[i,1]==e)的條件?如何檢查矩陣的第一列是否包含來自向量的值

+0

歡迎SO。從可讀性的角度來看,幾個空格和一些縮進很長。請記住 –

+0

..謝謝。 – anu

回答

3

這很簡單:

if any((D[i, 1] %in% e)) 
+0

如果有任何差異((D [i,1]%in%e))和if(D [i,1]%in%e)?前者不適合我,而後者則適合我。 – anu

+0

請在您的R解釋器上嘗試'?any'和'?all'。如果任何值爲TRUE,則任何'將任何布爾值的向量摺疊成一個。 – asb

2

我想接近它是這樣的:

x <- matrix(sample(letters, 25), ncol = 5) 

> x 
    [,1] [,2] [,3] [,4] [,5] 
[1,] "k" "v" "n" "l" "f" 
[2,] "w" "c" "y" "r" "i" 
[3,] "u" "p" "o" "q" "j" 
[4,] "g" "s" "d" "t" "x" 
[5,] "a" "z" "b" "h" "m" 

e <- c("r", "e", "d") 
apply(x, 1, function(x, e) any(x %in% e), e = e) 

[1] FALSE TRUE FALSE TRUE FALSE 
相關問題