2011-12-05 7 views
5

मेरे पास कुछ बहुत लंबे "टिप्पणियां" कॉलम के साथ डेटा फ्रेम है। जब मैंने उन्हें प्रदर्शित किया है तो वे अलग-अलग ब्लॉक में विभाजित हैं, जिससे पंक्तियों में पढ़ना मुश्किल हो जाता है। क्या आर में सेटिंग बदलना संभव है या किसी निश्चित लंबाई पर तारों को छंटनी करने के लिए डेटा को फ्रेम में संशोधित करना संभव है?क्या डेटाफ्रेम की सामग्री को देखते समय आउटपुट को छोटा करना संभव है?

उदाहरण: एक 3 स्तंभ dataframe

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)))) 

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

[आर में लंबे तार के साथ मुद्रण dataframes] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/8343682/printing-dataframes-with-long-strings-in-r) – Andrie

उत्तर

11

मैं इस तरह स्पष्ट रास्ता एक तरह का सुझाव देते हैं:

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

उपयोग:

> 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 

हालांकि यह संभव है डिफ़ॉल्ट व्यवहार को बदलने के लिए, मैं सलाह नहीं देते:

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) 

उपयोग:

> 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

अद्भुत! नियमित अभिव्यक्तियों की मेरी खोज ने मुझे अभी तक सब्सक्राइब नहीं किया है - अब मेरे पास अपने टूलबॉक्स में जोड़ने के लिए एक प्रारंभिक बिंदु है। –

संबंधित मुद्दे