2014-11-19 15 views
6

Tôi hiện đang chuyển sang pander cho hầu hết định dạng knitr-markdown của mình, vì nó cung cấp hỗ trợ tuyệt vời như vậy pandoc. Một trong những điều tôi không hài lòng với điều này là liên kết trung tâm mặc định. Người tiếp thị có thể yêu thích nó, nhưng đối với các báo cáo kỹ thuật thì đó là một kinh dị.Thay đổi căn chỉnh mặc định trong pander (pandoc.table)

Lựa chọn tốt nhất được sử dụng bởi Hmisc là sử dụng căn chỉnh trái cho văn bản và ngày theo mặc định và căn chỉnh cho số của tất cả các loại.

Có cách nào đơn giản để thiết lập toàn cầu này trong pander không?

library(pander) 
pander(data.frame(
    name   = letters[1:3], 
    size   = 1:3, 
    we.have.dates = Sys.Date() - 1:3 
)) 

Trả lời

9

Cảm ơn các bạn tốt bụng và câu hỏi hay. Có một tính năng chưa được ghi chép đầy đủ trong pander, nhưng bạn cũng có thể chuyển một hàm R làm default table alignment. Bản trình diễn nhanh:

> panderOptions('table.alignment.default', 
+  function(df) ifelse(sapply(df, is.numeric), 'right', 'left')) 
> pander(data.frame(
+  name   = letters[1:3], 
+  size   = 1:3, 
+  we.have.dates = Sys.Date() - 1:3 
+)) 

----------------------------- 
name  size we.have.dates 
------ ------ --------------- 
a   1 2014-11-18  

b   2 2014-11-17  

c   3 2014-11-16  
----------------------------- 

Vì vậy, mẹo ở đây là xác định hàm chỉ lấy một đối số để phân tích và trả về vectơ của tham số căn chỉnh cột.

+0

Tại sao không phải là mặc định này? Đã được tạo ra bởi "người tiếp thị"? –

+0

Nhân tiện, tôi đã sử dụng điều này trên một số bảng 2 chiều mà tôi đã tạo. Đã phải thay thế hàm 'sapply' của bạn thành' apply (df, 2, is.numeric) 'để nó hoạt động. Cảm ơn câu trả lời! –

+1

@WaldirLeoncio wow, tôi không bao giờ được gọi là "anh chàng tiếp thị" :) Về giá trị mặc định: những thứ này sẽ không bao giờ phù hợp với sở thích của mọi người, nhưng đó là lý do tại sao tôi tạo ra 'panderOptions' toàn cầu - mà bạn có thể đặt vào' .Rprofile' tốt. – daroczig

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