2016-04-14 21 views
0

için önceki soruları kontrol ettiniz amaGeçersiz uzunluk hatası acemi

columnmean<-function(y){ 
    n<-ncol(y) 
    means<-numeric(n) 
    for(i in 1:n){ 
     means[i]<-mean(y[,i]) 
    } 
    means} 

ben sadece hatayı anlayamıyorum, hatta kod doğru görünüyor bir cevap bulamadık. y bir vektör olup

columnmean<-function(y){ 
    n <- ncol(y) 
    means <- numeric(n) 
    for(i in 1:n) { 
    means[i] <- mean(y[,i]) 
    } 
    means 
} 
columnmean(1:10) 

Eğer ncol(y) sonucu NULL çıkmaktadır: i giriş bu hat İşte

means[i]<-mean(y[,i]) 
+1

Verilerin her bir sütununun ortalama değerini almak ister misiniz? o zaman neden kullanmıyorsunuz (veri isminiz, 2, ortalama). Ancak, bu döngüyü kullanmak isterseniz, hatayı yeniden üretebilmemiz ve neyin yanlış olduğunu görebilmemiz için lütfen bir veri ekleyebilir misiniz? Üçüncü çizginin as.numerik olması gerektiğini düşünüyorum. Döngüyü çalıştırmadan önce bir matris oluşturmalısınız, veri çıktınız ile aynı boyuta sahip bir matris –

+1

Yerleşik işlev "colMeans" işlevini neden kullanmayın? Eğer yardım istiyorsanız, aynı zamanda minimum bir tekrarlanabilir kod da vermelisiniz (veri ile, 'dput' kullanarak) – DeveauP

+0

@Learner: üçüncü satır doğru, n ile doldurulacak boş bir n uzun numerik vektör yaratır. döngü. Ve eğer her bir sütun üzerinde bir ortalama çalıştırırsanız, bir matris değil bir vektör alırsınız. – DeveauP

cevap

2

içinde n'nin değeri hatasının bir üreme ise Ayrıca ben bazı boyut hatası alıyorum . Fonksiyonunuzdaki aşağıdaki hesaplama, hatayı artırır.
Ayrıca colMeans(1:10) hataya neden olur (argümanın daha iyi iç denetimi nedeniyle başka bir hata).

Yani, kod (yani tek boyutlu y bir vektör ~~> hatası)

columnmean(BOD) 
# [1] 3.666667 14.833333 

hata y sarkar .:, örneğin iki boyutlu veriler için doğrudur.