2014-06-26 29 views
31

tôi đang tạo ra một dataframe sử dụng mã này:Loại bỏ hiển thị tên hàng từ khung dữ liệu

df <- data.frame(dbGetQuery(con, paste('select * from test'))) 

nào dẫn đến điều này:

UID  BuildingCode AccessTime 
1 123456 BUILD-1  2014-06-16 07:00:00 
2 364952 BUILD-2  2014-06-15 08:00:00 
3 95865 BUILD-1  2014-06-06 09:50:00 

Tôi thì cố gắng loại bỏ những cái tên hàng (1 , 2, 3, vv) như đề xuất here bằng cách sử dụng mã này:

rownames(df) <- NULL 

Nhưng sau đó khi tôi in ra df nó vẫn hiển thị tên hàng. Có cách nào để không bao gồm tên hàng khi tạo khung dữ liệu không? Tôi tìm thấy một gợi ý về row.name = FALSE nhưng khi tôi đã thử nó tôi chỉ có lỗi (tôi có thể đã đặt nó ở vị trí sai).

EDIT: Điều tôi muốn làm là chuyển đổi khung ngày thành bảng HTML và tôi không muốn hiển thị tên hàng trong bảng.

+1

nó không phải là rõ ràng những gì bạn có ý nghĩa bởi "khi tôi in ra df". Có phải 'row.names = FALSE' trong' write.table' có liên quan không? – Henrik

+0

@Henrik có thể cung cấp giải pháp tốt nhất ở đây. Tôi tự hỏi tại sao làm một cái gì đó như 'thuộc tính (df) $ row.names <- NULL' xóa tất cả các giá trị hình thức df –

+0

Ý tôi là" khi tôi in ra df "là tôi gõ' df' vào terminal rồi in ra khung dữ liệu. Tôi không có 'write.table' vì tôi không viết một bảng (và khi nào tôi sẽ sử dụng xtable). –

Trả lời

51

Bạn đã loại bỏ thành công các rownames. Phương thức print.data.frame chỉ hiển thị số hàng nếu không có tên gọi.

df1 <- data.frame(values = rnorm(3), group = letters[1:3], 
        row.names = paste0("RowName", 1:3)) 
print(df1) 
#   values group 
#RowName1 -1.469809  a 
#RowName2 -1.164943  b 
#RowName3 0.899430  c 

rownames(df1) <- NULL 
print(df1) 
#  values group 
#1 -1.469809  a 
#2 -1.164943  b 
#3 0.899430  c 

Bạn có thể ngăn chặn in rownames và số trong print.data.frame với lập luận row.names.

print(df2, row.names = FALSE) 
#  values group 
# -1.4345829  d 
# 0.2182768  e 
# -0.2855440  f 

Sửa Theo văn bản trong các ý kiến, bạn muốn chuyển đổi này sang HTML. Từ các tài liệu xtableprint.xtable bạn có thể thấy rằng đối số include.rownames sẽ thực hiện thủ thuật.

library("xtable") 
print(xtable(df1), type="html", include.rownames = FALSE) 
#<!-- html table generated in R 3.1.0 by xtable 1.7-3 package --> 
#<!-- Thu Jun 26 12:50:17 2014 --> 
#<TABLE border=1> 
#<TR> <TH> values </TH> <TH> group </TH> </TR> 
#<TR> <TD align="right"> -0.34 </TD> <TD> a </TD> </TR> 
#<TR> <TD align="right"> -1.04 </TD> <TD> b </TD> </TR> 
#<TR> <TD align="right"> -0.48 </TD> <TD> c </TD> </TR> 
#</TABLE> 
+1

Sau khi làm như tôi đã nói ở trên, khi tôi làm 'thuộc tính (df)' tôi nhận được kết quả này: '$ row.names [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15'. Điều này không chỉ ra rằng các tên hàng vẫn còn đó?Về cơ bản những gì tôi muốn làm là chuyển đổi DF sang một bảng HTML và tôi chỉ không muốn tên hàng có mặt. –

+0

@DomAbbott Từ các tài liệu R, một 'data.frame' là" là một 'danh sách' của các biến của cùng một số hàng với các tên hàng duy nhất, cho lớp '' data.frame''. Nếu không có biến nào được bao gồm, tên hàng xác định số hàng. " Do đó tên hàng luôn có mặt trong các thuộc tính. Làm cách nào để bạn thực hiện chuyển đổi? –

+0

Ý bạn là gì khi chuyển đổi? Tôi đang sử dụng mã này để tạo ra một bảng html 'in (xtable (df), loại =" html ", file =" example.html ")' nhưng điều này bao gồm các tên hàng. –

13

Có, tôi biết nó là hơn nửa năm sau đó và một chút muộn, NHƯNG

row.names(df) <- NULL 

làm việc. Đối với tôi ít nhất :-)

Và nếu bạn có thông tin quan trọng trong row.names như ngày tháng ví dụ, những gì tôi làm chỉ là:

df$Dates <- as.Date(row.names(df)) 

này sẽ bổ sung thêm một cột mới ở cuối dòng nhưng nếu bạn muốn nó vào đầu của khung dữ liệu của bạn

df <- df[,c(7,1,2,3,4,5,6,...)] 

Hope this helps những từ Google :)

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