2016-03-21 20 views
-3

Sayısal değerlerin bir listesini alıyorum ve orijinal listeden her 2 ardışık öğenin farkından oluşan yeni bir liste hesaplamam gerekiyor. Bu kodu vardır: bu yüzden benim orijinal listeHer 2 ardışık eleman arasındaki farkı ayıklayın

> dput(wss) 
c(4155212952468.46, 4021505707879.36, 4017356406677.14, 4015231535838.63, 
4013350949497.91, 17067610483.738, 17023281391.9182, 4013258218594.64, 
14454798910.9291, 16989216167.6064, 14860266330.575, 14480295584.8302, 
14506662229.3596, 14289181733.1553, 14283121461.9347) 

ve sonuç listesinde ilk eleman 4155212952468,46 olacağını beklenebilir wss olan

wss <- (nrow(dat)-1)*sum(apply(dat,2,var)) 
    for (i in 2:15) wss[i] <- sum(kmeans(dat, 
             centers=i)$withinss) 
    plot(1:15, wss, type="b", xlab="Number of Clusters", 
     ylab="Within groups sum of squares") 

    # choose optimal k where sos derivative is large for the first time 
diff <- lapply(wss, diff) 

-4021505707879,36 İkinci unsur olacaktır 4021505707879,36 - 4017356406677.14 ve benzeri Herhangi bir yardım için minnettar

+1

Lütfen doğru terminolojiyi kullanın. Sahip olduğunuz şey bir vektör ve bir liste değil. – Roland

cevap

0

You c Bu, farklılıkların bir vektörünü döndüren

'u kullanır. Neyi yanlış yaptığınızı göstermek için

. lapply bir listede kullanılmalı ve listedeki her eleman için bir işlevi değerlendirmelidir. Bu, aşağıdakiler için geçerli değildir: i) bir listeniz yok, ii) 2 ardışık öğe arasındaki farklara ve kullandığınız yönteme göre, bir liste olsa bile, yalnızca bir fonksiyon farkını

+1

Hayır, bir vektör değil, bir dizi döndürür. – Roland

İlgili konular