2013-04-12 15 views
6

Uygulama işlevini nasıl kullanacağımı öğrenmeye çalışıyorum ve bu eğiticiye rastladım: http://nsaunders.wordpress.com/2010/08/20/a-brief-introduction-to-apply-in-r/ Açık ve özlü görünüyor, ancak hemen bir sorunla karşılaşıyorum.R on Fonksiyonu Uygula işlevini Kullanarak Hata Uygulanırken Hata Örnek

> # create a matrix of 10 rows x 2 columns 
> m <- matrix(c(1:10, 11:20), nrow = 10, ncol = 2) 
> # mean of the rows 
> apply(m, 1, mean) 
[1] 6 7 8 9 10 11 12 13 14 15 

Bu çok temel görünüyor, ama ben bir deneyin düşündüm: onlar uygulamak göstermek için vermek ilk örneğidir. İşte benim sonucudur:

> # create a matrix of 10 rows x 2 columns 
> m <- matrix(c(1:10, 11:20), nrow = 10, ncol = 2) 
> # mean of the rows 
> apply(m, 1, mean) 
Error in FUN(newX[, i], ...) : unused argument(s) (newX[, i]) 

Tabii

biraz daha bilgi vermek ... Bu sefer kayboldum demek, ben öğretici sağlanan bir örnek daha teşebbüs ve doğru sonucu aldık.

apply(m, 1:2, function(x) x/2) 
     [,1] [,2] 
[1,] 0.5 5.5 
[2,] 1.0 6.0 
[3,] 1.5 6.5 
[4,] 2.0 7.0 
[5,] 2.5 7.5 
[6,] 3.0 8.0 
[7,] 3.5 8.5 
[8,] 4.0 9.0 
[9,] 4.5 9.5 
[10,] 5.0 10.0 

sessionInfo() çıktısı aşağıdadır: Bu durumda fark fonksiyonu özellikle geçerlidir işlevinde belirtilen olmasıydı (GERÇEK = detaylar)

R version 2.15.3 (2013-03-01) 
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit) 

locale: 
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

loaded via a namespace (and not attached): 
[1] tools_2.15.3 

Ve çakışmaları çıkış

Eğer mean bir çatışma var çünkü diğerleri belirledik gibi
$.GlobalEnv 
[1] "edit" "mean" 

$`package:utils` 
[1] "edit" 

$`package:methods` 
[1] "body<-" "kronecker" 

$`package:base` 
[1] "body<-" "kronecker" "mean" 
+2

Eğer 'sorunuzu' sessionInfo() 've' çatışmaları (detay = TRUE) çıktısını yapıştırın miyim? Oldukça garip! –

+1

Temiz bir oturum başlat, benim için çalışıyor. –

+0

Orijinal mesaja ek bilgi ekledim. – tjnel

cevap

2

, muhtemelen bu. Eğer herhangi bir şey (fonksiyonlar, nesneler) çağırdığınızda Bu bulduğunu kadar R arama yoluna geçer (ve bulunmazsa R buna göre şikayet):

> search() 
[1] ".GlobalEnv"  "tools:RGUI"  "package:stats"  
[4] "package:graphics" "package:grDevices" "package:utils"  
[7] "package:datasets" "package:methods" "Autoloads"   
[10] "package:base" 

Eğer R, not oldukça yeni iseniz Eğer bir işlev oluştururken aksi belirtmedikçe, genellikle ".GlobalEnv" yaşamak için gidiyor. R, daha ileriye gitmeden önce oraya bakar, bu yüzden fonksiyonlarınızı isabetli olarak isimlendirmek, yani ortak işlevlerle çakışmamak için oldukça önemlidir (ör. mean, plot, summary).

Muhtemelen arada bir temiz oturumu ile başlamak için iyi bir fikirdir. Hata ayıklama aşamasında, x veya y değişkenlerine isimlendirmesi oldukça yaygındır (adından da anlaşılacağı gibi kolaylık sağlamak için isimler ... sadece insanız), bu da beklenmedik bir şekilde sorunlu olabilir. Eğer çatışmalar artar olasılık oldukça kalabalık, yani (a) benim tavsiyem olurdu geri vermeden dikkatlice ve (b) yeniden başlatma isimleri almaya bir çalışma alanı varsa.

İlgili konular