SORU
26 Mayıs 2011, PERŞEMBE


R, R tam olarak temel işlevleri aynı adı taşıyan değişkenler olması ile sorun nedir?

Genel olarak kötü programlama uygulama olarak kabul edilmesi için aynı adı taşıyan R temel işlevleri olan değişken isimlerini kullanmak gibi görünüyor.

Örneğin, cazip yazmak için:

data <- data.frame(...)
df   <- data.frame(...)

Şimdi, işlevi data yük veri fonksiyonu df f yoğunluk işlevini hesaplar iken ayarlar.

Benzer şekilde, cazip yazmak için:

a <- 1
b <- 2
c <- 3

Bu işlevi c argümanları birleştirir çünkü kötü karşılanır.

Ama:R fonksiyonları olan beygir, lm, doğrusal modeller hesaplamak için, data bağımsız değişken olarak kullanılır. Başka bir deyişle, data olur lm işlev içinde açık bir değişken.

Yani:Eğer R çekirdek ekip değişkenler ve fonksiyonlar için aynı adı kullanabilirsiniz eğer, biz gibilerin ne durdurur?

Cevap R karışık değil. Ben açıkça adı c ile bir değişken atamak nerede aşağıdaki örnek, deneyin. R değişken ve fonksiyon arasındaki fark: hiç de karışık değil

c("A", "B")
[1] "A" "B"

c <- c("Some text", "Second", "Third")
c(1, 3, 5)
[1] 1 3 5

c[3]
[1] "Third"

Soru:Tam olarak temel R fonksiyonu olarak aynı ada sahip değişken olmasındaki sorun nedir?

CEVAP
26 Mayıs 2011, PERŞEMBE


Gerçekten bir tane bile yok. R normalde bir fonksiyonu ararken nesneleri (sigara işlev nesneleri) arama:

> mean(1:10)
[1] 5.5
> mean <- 1
> mean(1:10)
[1] 5.5
> rm(mean)
> mean(1:10)
[1] 5.5

Zavallı kodlama çıkış yakalar nereye örnekler ve @Sacha Joris @tarafından gösterilir. foo yazmak için bir iyi bir yol

foo <- function(x, fun) {
    fun <- match.fun(fun)
    fun(x)
}

Kullanıldığında verir:

> foo(1:10, mean)
[1] 5.5
> mean <- 1
> foo(1:10, mean)
[1] 5.5

Orada durumlarda nerede bu yakalamak ve @Joris örnek na.omit biri, IIRC, oluyor çünkü bu standart, standart dışı değerlendirme kullanılan lm().

Birçok sorunun cevabı da işlevleri sorunun maskeleme T vs TRUE sorunu birleştirmek zorunda. T TRUE biraz @Andrie bu sorunun kapsamı dışında bir işlevleri yok.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • kylelandry

    kylelandry

    9 AĞUSTOS 2007
  • Lamborghini

    Lamborghini

    13 Aralık 2005
  • listedabive

    listedabive

    30 Ocak 2007