2011-12-05 37 views
5

Tôi có khung dữ liệu với một số cột "nhận xét" rất dài. Khi tôi hiển thị chúng, chúng được chia thành các khối khác nhau, làm cho nó khó đọc qua các hàng. Có thể thay đổi cài đặt trong R hoặc sửa đổi lệnh gọi thành data.frame để cắt ngắn chuỗi ở độ dài nhất định không?Có thể cắt bớt đầu ra khi xem nội dung của các khung dữ liệu không?

Ví dụ: 3 cột 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)))) 

Kết quả dataframe như nhìn thấy trên màn hình của tôi:

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

thể trùng lặp của [dataframes In ấn với chuỗi dài trong R] (http://stackoverflow.com/questions/8343682/printing-dataframes-with-long-strings-in-r) – Andrie

Trả lời

11

Tôi khuyên bạn nên một loại cách rõ ràng như thế này:

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

cách sử dụng:

> 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 

Mặc dù nó có thể thay đổi hành vi mặc định, tôi không khuyên bạn nên:

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) 

sử dụng:

> 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

Tuyệt vời! Những khám phá của tôi về các biểu thức chính quy đã không đưa tôi đến chất nền - bây giờ tôi có một điểm bắt đầu để thêm nó vào hộp công cụ của tôi. –

Các vấn đề liên quan