2016-04-02 18 views
1

Anlamadığım ve şimdiye kadar bir açıklama bulamadığım bir sorunla karşılaştım. İşte bir örnek: as.data.frame() zorlamak için veri türü tamsayı ve nasıl ortaya çıkmasını engellemek için neden olarakVeri çerçevesi veri tipini nasıl kullanır?

x = matrix(data = "test", nrow = 5, ncol = 3) 
typeof(x[1, 1]) 
> "character" 

x = as.data.frame(x) 
typeof(x[1, 1]) 
> "integer" 

fikrin var mı?

+0

kullanılarak önlenebilir

! Ben bu konu :) –

+0

Teşekkür kapatabilir böylece bir cevap olarak yayınlamayın gerektiğini düşünüyorum yayınlanmıştır gibi bir çözüm. – akrun

cevap

2

matrix yalnızca tek bir sınıfa sahip olabilir. Normalde, sayısal öğeler için matrix kullanıyoruz. Sayısal olmayan matrix'da tek bir öğe varsayalım, tüm matrisi character sınıfına dönüştürecektir.

OP'nin gönderisiyle ilgili olarak, character öğeleriyle matrix sahibiz. Biz typeof kullandığınızda bir matrix (as.data.frame ile) data.frame etmeye zorluyor, bu data.frame dönüştürülecektir, ancak varsayılan seçeneği (her sütunda 'karakteri' elemanları data.frame yılında stringsAsFactors=TRUE)factor sınıfa dönüştürmek için olacaktır. Biz almak factor ait integer temsilidir. Bu mükemmel stringsAsFactors=FALSE

x1 <- as.data.frame(x, stringsAsFactors=FALSE) 
+2

Ah ... dizeleriAsFactors .... şimdiye kadar hayal edilen en kötü varsayılan seçeneklerden biri ...: D – digEmAll

İlgili konular