2011-06-08 21 views
6

Ben tamsayı bulundu ve çift değerler matris içinde farklı davranır ve yanlış cevap çift veri türleri yalnızca döndü. I/sayısal çift değerleri değiştirilebilir AncakNeden çift/sayısal değer aralığı% olarak% kullanarak yanlış cevap dönmek?

#Test 
m <- matrix(1:12,4,3) 
which(!m[1,] %in% 1:5) 

which(!m[1,] %in% 1:5) 
[1] 3 

,

m <- matrix(c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6), 4,3) 
which(!m[1,] %in% 0.10:0.35) 

    [,1] [,2] [,3] 
[1,] 0.1 0.5 0.3 
[2,] 0.2 0.6 0.4 
[3,] 0.3 0.1 0.5 
[4,] 0.4 0.2 0.6 

which(!m[1,] %in% 0.10:0.35) 
[1] 2 3 

sadece 2 farklı neden 1,3, 0,35 0.10 aralığındadır, çünkü cevap olmalıdır Tamsayı ve sayısal kullanarak hesaplama. Teşekkürler! Eğer : operatör ne yaptığı kusurlu anlayışa sahip çünkü

+1

+1 ve beklenen sonuçlar şunlardır:

sonra olan sonuç almak için aşağıdaki yazmak gerekir. – Andrie

cevap

9

öyle. : aralığını gösterir, ancak gerçekten de (tamsayı aralıklarda) ayrı değerlerinin dizilerini oluşturmak için bir kısayol değildir.

karşılaştırın:

> 1:5 
[1] 1 2 3 4 5 

> 0.1:0.35 
[1] 0.1 

Yani kod testlerin ilk bit bir değer veri 0.1'e eşit olup olmadığını tamsayılar 1 ila 5. Ama kod testlerinin ikinci bit aralığı %in% olup olmadığı. örnek kod, veri ile net bir soru sormak için

which(!(m[1, ] >= 0.1 & m[1, ] <= 0.35)) 
[1] 2 
+0

0.1'e eşit mi? – jrara

+0

@jrara evet, ben o Andrie kastediyordum düşünüyorum ve buna göre cevap kaydetmiştiniz. –

+0

@GavinSimpson. Düzenleme parmağınız açıkça benimkinden daha hızlı. – Andrie

İlgili konular