2011-12-05 13 views
5

Çok uzun "yorum" sütunlarına sahip bir veri çerçevem ​​var. Onları gösterdiğimde, farklı bloklara bölünerek satırlar arasında okumayı zorlaştırıyorlar. R'de bir ayarı değiştirmek veya dizeleri belirli bir uzunlukta kesmek için data.frame çağrısını değiştirmek mümkün mü?Veri çerçevelerinin içeriğini görüntülerken çıktının kesilmesi mümkün mü?

Örnek: dataframe Ortaya

data.frame(cbind(rep(1,5),rep(c("very very long obnoxious character string here" ,"dog","cat","dog",5)),rep(c("very very long obnoxious character string here" ,"dog","cat","dog",5)))) 

ekranımda görüldüğü gibi 3 sütunlu dataframe:

X1            X2 
1 1 very very long obnoxious character string here 
2 1           dog 
3 1           cat 
4 1           dog 
5 1            5 
              X3 
1 very very long obnoxious character string here 
2           dog 
3           cat 
4           dog 
5            5 
+0

olası yinelenen (http://stackoverflow.com/questions/8343682/printing-dataframes-with-long-strings-in-r) – Andrie

cevap

11

böyle açık bir şekilde bir tür tavsiye:

f <- function(x) data.frame(lapply(x, substr, 1, 5)) 

kullanımı:

varsayılan davranışını değiştirmek mümkün olsa da
> f(d) 
    X1 X2 X3 
1 1 very very 
2 1 dog dog 
3 1 cat cat 
4 1 dog dog 
5 1  5  5 

, ben önermiyoruz:

body(format.data.frame)[[5]] <- quote(for (i in 1L:nc) rval[[i]] <- substr(format(x[[i]], ..., justify = justify), 1, 5)) 
unlockBinding("format.data.frame", baseenv()) 
assign("format.data.frame", format.data.frame, pos = baseenv()) 
lockBinding("format.data.frame", baseenv()) 
rm(format.data.frame) 

kullanımı: [R uzun dizeleriyle Baskı dataframes] arasında

> d 
    X1 X2 X3 
1 1 very very 
2 1 dog dog 
3 1 cat cat 
4 1 dog dog 
5 1  5  5 
+0

Harika! Düzenli ifadelerimdeki keşiflerim beni henüz altüst etmeye almamıştı - şimdi onu araç kutusuna eklemek için bir başlangıç ​​noktam var. –

İlgili konular