2010-02-16 22 views

cevap

49

:

operatörleri < - ve = onlar değerlendirilme ortama atayın. Operatör < - operatör sıçanlara tek (komut satırına yazılan tam ifadede, örneğin), üst düzeyde izin verilen ya da, her yerde kullanılabilir ifadelerin çaprazlı listesindeki alt ifadelerin olarak. Robert ve Casella tarafından, "R ile Monte Carlo Yöntemleri Tanıtımı" dan okuma

+5

' <-' her yerde kullanılabilir, bu bir olduğu anlamına gelir. ? = ' –

+26

Hayır, hala işlevi çağrılırken global atama önlemek için' '= kullanmaya gerek gerekir' kullanmak gerekir bu örneklere bakın:. http://www.mayin.org/ajayshah/KB/R/html /b1.html Eğer isim <- "paypal", x <-2, ... 'yi kullandıysanız, x'i en üst seviyeye ayarlayacaktır. Bu örneği çalıştırmayı deneyin ama'

13

:

"atama operatörü eşitlik için Boole operatörüdür == ile karıştırılmamalıdır, = olan yaşlı bir. atama operatörü ve, uyumluluk nedenleriyle, hala işlevsel kalır <-, ama daha temiz programlama sağlamak için göz ardı edilmelidir (Spector, P. (2009) işaret ettiği gibi 'R ile veri denetleme' -... Bölüm 8.7, = sonra

) anahtar kelimeleri belirlemek için kullanılan bu yana, system.time kullanırken bir istisnadır

atama operatörü < bir yanıltıcı özelliği - ifadeler, x [1] den -2 az olup olmadığını test etmek için gereken ancak kadar 2 tahsis sona erer

> if (x[1]<-2) ... 

olarak Boolean bulunan x [1], mevcut değerini siliyor! Ayrıca, dikkat

> if (x[1]=-2) ... 

yanlışlıkla kullanmak yerine (x [1] == - 2) aynı sonuca sahiptir "olarak

+0

Ayrıca, "global atama" nın, böyle bir şey yapmanın gerekliliği ne olursa olsun, sadece ("gets" -based) '<< -' operatörünü kullanarak gerçekleştirilebileceğini düşünüyorum. "eşittir" temelli bir eşdeğeri değil. - elverişli yasak 'edilir http://google-styleguide.googlecode.com/svn/trunk/google-r-style.html#assignment –

+6

Google'ın Ar stil kılavuzu tersini söylüyor Bu tür bir hatayı önlemek için. Özellikle, '=' operatörüne yalnızca en üst düzeyde izin verilir. –

+0

' (2 x [1] =) eğer: – Aaron