2013-05-12 32 views
12

Tôi đang tạo gói R của riêng mình và tôi đã tự hỏi các phương pháp có thể có mà tôi có thể sử dụng để thêm bộ dữ liệu (chuỗi thời gian) vào gói của mình là gì. Dưới đây là các chi tiết cụ thể:Cách đặt bộ dữ liệu vào gói R

Tôi đã tạo thư mục con gói được gọi là dữ liệu và tôi biết rằng đây là vị trí tôi nên lưu các tập dữ liệu mà tôi muốn thêm vào gói của mình. Tôi cũng nhận thức được thực tế là các tệp có chứa dữ liệu có thể. rda, .txt hoặc .csv tệp.

Mỗi chuỗi dữ liệu mà tôi muốn thêm vào gói bao gồm một cột đơn (ví dụ: dạng 340 hoặc 4.5) và mỗi chuỗi dữ liệu khác nhau về độ dài.

Cho đến giờ, tôi đã lưu tất cả bộ dữ liệu vào một tệp .txt. Tôi cũng đã tải thành công dữ liệu bằng cách sử dụng chức năng dữ liệu(). Tuy nhiên, vấn đề không được giải quyết.

Sự cố là mỗi chuỗi dữ liệu được tải dưới dạng yếu tố ngoại trừ chuỗi dài nhất. Chuỗi tải khi các yếu tố chứa các giá trị bị thiếu (của biểu mẫu '.'). Tôi đã phải thêm các giá trị còn thiếu này để làm cho mỗi cột dữ liệu có cùng độ dài. Tôi đã thử lưu dữ liệu dưới dạng các cột không bằng nhau, nhưng tôi đã nhận được thông báo lỗi sau khi gọi dữ liệu().

Hậu quả của việc thêm các giá trị bị thiếu để tải dữ liệu là khi dữ liệu được tải, tôi cần xóa NA để có thể phân tích dữ liệu của mình! Vì vậy, điều này rõ ràng không phải là một cách tốt để làm việc.

Lý tưởng nhất (tôi giả sử), tôi muốn dữ liệu tải dưới dạng vectơ số hoặc dưới dạng danh sách. Bằng cách này, tôi sẽ không cần NA thêm vào cuối mỗi bộ truyện.

Làm cách nào để giải quyết vấn đề này? Tôi có nên lưu tất cả dữ liệu vào một tệp duy nhất không? Nếu vậy, tôi nên làm gì ở định dạng nào? Có lẽ tôi nên lưu các tập dữ liệu vào một số tập tin? Một lần nữa, trong đó định dạng? Cách thực hành tốt nhất để làm điều này là gì? Bất kỳ lời khuyên nào cũng sẽ được đánh giá cao.

Trả lời

8

Tôi không chắc liệu tôi có hiểu chính xác câu hỏi của bạn hay không. Nhưng, nếu bạn chỉnh sửa dữ liệu của bạn ở định dạng ưa thích của bạn và lưu với

save(myediteddata, file="data.rda") 

Các dữ liệu cần được nạp chính xác theo cách bạn nhìn thấy nó trong R.

Để tải tất cả các file trong thư mục dữ liệu bạn nên thêm

LazyData: true 

Để tệp DESCRIPTION của bạn, trong gói của bạn.

Nếu đây không giúp bạn có thể gửi một tập tin của bạn và một bản in của định dạng mà bạn muốn, điều này sẽ giúp chúng tôi để giúp bạn;)

+0

Xin cảm ơn, user1265067. Đề xuất của bạn đã giúp tôi rất nhiều. Cuối cùng, tôi quyết định lưu từng chuỗi, theo định dạng ưa thích của tôi, dưới dạng tệp .rda riêng biệt. Phương pháp này làm việc một sự quyến rũ đối với tôi. Bây giờ tôi có thể chuyển sang tạo các tệp .rd và đưa chúng vào thư mục con người để mô tả các tập dữ liệu trong gói của tôi. Chúc mừng! Nhân tiện, xin lỗi vì đã không làm cho câu hỏi của tôi dễ hiểu - đó là một vấn đề khó khăn để đưa vào từ ngữ. –

+0

@GraemeWalsh: Bạn có thể giải thích cách bạn sử dụng các tệp .rda này trong mã của mình không? Có thể sử dụng các tệp .rds không? – Ankit

+1

@Ankit Sử dụng hàm load() để tải dữ liệu vào vùng làm việc. http://en.wikibooks.org/wiki/R_Programming/Working_with_data_frames#Reading_and_saving_data Điều này giúp ích? –

3

Ngoài việc tiết kiệm như file RDA bạn cũng có thể chọn để load nó dưới dạng số với:

read.table(... , colClasses="numeric") 

Hoặc là không yếu tố văn:

read.table(..., as.is=TRUE) # which does pretty much the same as stringsAsFactors=FALSE 
read.table(..., colClasses="character") 

Nó cũng xuất hiện rằng data chức năng sẽ chấp nhận những lập luận tội c nó được ghi nhận là một trình bao bọc đơn giản cho read.table(..., header=TRUE).

+0

Cảm ơn bạn đã giúp đỡ, DWin. –

0

Vị trí lưu dữ liệu ưu tiên của bạn phụ thuộc vào định dạng của nó.

Như Hadley gợi ý:

  • Nếu bạn muốn lưu trữ dữ liệu nhị phân và làm cho nó có sẵn cho người dùng, đặt nó trong data/. Đây là nơi tốt nhất để đặt các tập dữ liệu ví dụ.
  • Nếu bạn muốn lưu trữ dữ liệu được phân tích cú pháp, nhưng không cung cấp dữ liệu đó cho người dùng , hãy đặt nó trong R/sysdata.rda. Đây là nơi tốt nhất để đặt dữ liệu mà các chức năng của bạn cần.
  • Nếu bạn muốn lưu trữ dữ liệu thô, hãy đặt nó trong inst/extdata.

Tôi đề nghị bạn có một cái nhìn tại các chương liên quan vì nó đi vào chi tiết về làm việc với dữ liệu khi phát triển các gói R.

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