2014-05-18 31 views
6

Tôi đang cố gắng viết các hàm trong R trong đó mục đích là đọc nhiều tệp .csv. Chúng được đặt tên là 001.csv, 002.csv, ... 332.csv.Giải thích cho chức năng chạy nước rút ("% 03d", 7)?

Với paste Tôi đã quản lý để tạo tên 1.csv, 2.csv v.v. nhưng tôi gặp khó khăn khi thêm số 0 đứng đầu. Có một gợi ý rằng việc xây dựng như sprintf("%03d", 7) là bắt buộc, nhưng tôi không biết tại sao và cách thức hoạt động của nó.

Vì vậy, ai đó có thể giải thích câu lệnh sau có thể thực sự làm gì?

+3

Bạn đã đọc trang trợ giúp '? Sprintf' chưa? Có một phần cụ thể không rõ ràng với bạn? – MrFlick

Trả lời

20

sprintf ban đầu đến từ C và tất cả các quy tắc định dạng cũng được lấy từ nó. Xem ?sprintf trong R hoặc this hoặc this tham chiếu để tìm hiểu chi tiết chủ đề. Ở đây tôi sẽ tóm tắt một cách ngắn gọn về ma thuật đằng sau nó là gì.

"%03d" là chuỗi định dạng, chỉ định cách in 7.

  • d là viết tắt của decimal integer (không double!), Vì vậy nó nói sẽ không có dấu chấm động hay bất cứ điều gì như thế, chỉ là một số nguyên thường xuyên.
  • 3 cho biết số lượng bản in sẽ có bao nhiêu chữ số. Chính xác hơn, số sẽ mất ít nhất 3 chữ số: 7 sẽ là __7 (có dấu cách thay vì dấu gạch dưới), nhưng 1000 sẽ giữ nguyên là 1000, vì không có cách nào để viết số này chỉ với 3 chữ số.
  • 0 trước 3 cho thấy không gian hàng đầu nên được thay thế bằng số không. Hãy thử thử nghiệm với sprintf("%+3d", 7), sprintf("%-3d", 7) để xem các công cụ sửa đổi có thể khác (chúng được gọi là cờ).
+1

Cảm ơn bạn vì điều này; tuyệt vời và ngắn gọn. Rất hữu ích! – Aron

+0

@Aron Cảm ơn - luôn luôn là một niềm vui! – tonytonov

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