2014-06-05 33 views
9

Standart sapmanın hesaplanmasında beklenmedik bir [benim için en azından] hata var. [*] fikri, tüm eksik değerleri 1 ve 0'a dönüştürmektir. Daha sonra, bir korelasyon yapılmadan önce, bazı [fakat tamamı değil] eksik değerleri olan değişkenleri ayıklayın. Bu çıkarma adımı bir sd işleviyle denenir, ancak başarısız olur [neden?]. data.frames üzerindeVeri çerçevesindeki standart sapma çalışmıyor

library(VIM) 
data(sleep) # dataset with missing values 

x = as.data.frame(abs(is.na(sleep))) # converts all NA to 1, otherwise 0 
y = x[which(sd(x) > 0)] # attempt to extract variables with missing values 

Error in is.data.frame(x) : 
(list) object cannot be coerced to type 'double' 

# convert to double  
z = as.data.frame(apply(x, 2, as.numeric)) 
y = z[which(sd(z) > 0)] 

Error in is.data.frame(x) : 
(list) object cannot be coerced to type 'double' 

Eylem [*] R Robert Kabacoff

cevap

13

sd R-3.0.0 beri kapalı olan:

> ## Build a db of all R news entries. 
> db <- news() 
> ## sd 
> news(grepl("sd", Text), db=db) 
Changes in version 3.0.3: 

PACKAGE INSTALLATION 

    o The new field SysDataCompression in the DESCRIPTION file allows 
     user control over the compression used for sysdata.rda objects in 
     the lazy-load database. 

Changes in version 3.0.0: 

DEPRECATED AND DEFUNCT 

    o mean() for data frames and sd() for data frames and matrices are 
     defunct. 

kullanın sapply(x, sd) yerine.

+1

Teşekkürler Joshua. Bunlar oldukça önemli fonksiyonlar ve sahip olduğum bazı kodları kırıyor. :-(. – Henk

+0

@Henk: Evet, o zamanlar birkaç CRAN paketi için sorun yaratıyor –

+5

@Henk Kendi 'mean.data.frame' ve' sd.data.frame' işlevlerinizi kolayca tanımlayabilirsiniz. – Roland

İlgili konular