2011-10-06 19 views
5

Verileri bir veri çerçevesinden satırlara erişmek istediğimizi varsayalım. Örnekler basitleştirilmiştir, ancak bir veri çerçevesini satır adlarına göre sıralarken, örneğin, (df[order(row.names(df)]), aynı tekniği kullanırız. veri çerçevesi iki sütun varsa, geri satır ismi içeren bir 1 sıralı veri çerçevesini almakR, neden veri çerçevesinden satırları seçerseniz, veri çerçevesinin yalnızca bir sütunu varsa, verileri vektör olarak döndürür?

> df 
    x1 
a x 
b y 
c z 

> df[1, ] # returns atomic vector 
[1] x 

: veri çerçevesi bir sütun halinde

, geri atomik vektörü elde

> df 
    x1 x2 
a x u 
b y v 
c z w 

> df[1, ] # returns data frame 
    X1 X2 
a x u 

veri çerçeve üzerinde aynı işlem çerçevesi kaç sütun bağlı sonuçların iki tür verir neden anlamıyorum. [ varsayılan argüman drop=TRUE çünkü

+0

Özdeş sorular: http://stackoverflow.com/q/7598674/602276 ve http: // stackoverflow.com/q/7352254/602276 – Andrie

cevap

11

öyle.

matrisleri ve diziler için damla

?"[" itibaren. TRUE ise sonuç mümkün olan en düşük boyuta zorlanır (örneklere bakın). Bu yalnızca ayıklama elemanları için çalışır, değiştirilmek üzere değil. Daha fazla ayrıntıları için bakınız.

> dat1 <- data.frame(x=letters[1:3]) 
> dat2 <- data.frame(x=letters[1:3], y=LETTERS[1:3]) 

varsayılan davranışı:

> dat[1, ] 
    row sessionId scenarionName stepName duration 
[1,] 1  1001    A start  0 

> dat[2, ] 
    row sessionId scenarionName stepName duration 
[1,] 2  1001    A step1  2.2 

drop=FALSE kullanma:

> dat1[1, , drop=FALSE] 
    x 
1 a 

> dat2[1, , drop=FALSE] 
    x y 
1 a A 
+10

Bu 'R Inferno' daire 8.1.45 http://www.burns-stat.com/pages/Tutor/R_inferno.pdf olduğu –

İlgili konular