tôi quyết định thêm giải pháp này quá vì tôi thấy rằng dput()
không hoạt động cho những gì tôi đã cố gắng làm. Tôi có một ứng dụng shiny
sử dụng knitr
để tạo báo cáo dựa trên phiên người dùng và tôi sử dụng knit_expand()
trước khi hiển thị thông số .Rmd của mình cho cổng người dùng từ phiên sáng bóng sang .Rmd.
Nếu không đi sâu vào chi tiết quá nhiều, tôi có nhu cầu đối với vectơ cổng "nguyên trạng", vì chúng sẽ được viết thành dòng mã trong .Rmd mà ai đó sẽ chạy. Đối với trường hợp này, dput()
không hoạt động vì đầu ra chỉ nhổ vào bảng điều khiển và phương thức dump()
hoạt động nhưng tôi không muốn ghi tệp mới mỗi lần và xóa chúng.
Có thể có cách tốt hơn, nhưng tôi đã viết một hàm trả về đối tượng ký tự của vectơ "nguyên trạng". Nó xử lý cả vectơ số và ký tự (nó ném dấu ngoặc kép xung quanh mỗi thành viên của vector ký tự). Nó cũng xử lý các đầu vào đơn và chỉ trả về chúng như chúng. Nó không đẹp, và tôi chắc chắn có nhiều cách hiệu quả hơn để viết nó, nhưng nó hoạt động hoàn hảo cho nhu cầu của tôi. Nghĩ rằng tôi sẽ thêm giải pháp này vào cuộc xung đột.
printVecAsis <- function(x) {
ifelse(length(x) == 1, x,
ifelse(is.character(x), paste0("c(", paste(sapply(x, function(a) paste0("\'",a,"\'")), collapse=", "), ")"),
paste0("c(", paste(x, collapse=", "), ")")))}
Hãy xem 'deparse (x) '. –