2010-07-16 32 views
11

Tôi đang sử dụng R để chạy mô phỏng bằng cách sử dụng dữ liệu chuỗi thời gian. Tôi đã sử dụng mảng để lưu trữ dữ liệu nhưng tôi cần một giải pháp ít bộ nhớ để lưu trữ dữ liệu ở các bước trung gian để ghi lại quá trình. Tôi không phải là lập trình viên nên tôi đang tìm kiếm một thứ tương đối dễ cài đặt trên nhiều nền tảng nếu có thể (Windows, Mac, Linux). Tôi cũng cần có khả năng gọi trực tiếp cơ sở dữ liệu từ R vì việc học một ngôn ngữ khác hiện không khả thi. Lý tưởng nhất, tôi muốn để có thể đọc và viết thường xuyên vào cơ sở dữ liệu trong một cách tương tự như một mảng mặc dù tôi không biết nếu đó là thực tế. Tôi sẽ sẵn sàng hy sinh tốc độ để dễ sử dụng nhưng tôi sẵn sàng làm việc để tìm hiểu các giải pháp nguồn mở. Mọi lơi đê nghị đêu nên được đanh gia cao.Đề xuất cho cơ sở dữ liệu với R

Trả lời

3

Tôi cũng cần để có thể trực tiếp gọi cơ sở dữ liệu từ R

Tôi đề nghị thiết lập MySQL với giao diện RMySQL.

Khi kết nối DB đang mở, bạn có thể truy vấn cơ sở dữ liệu và lấy dữ liệu vào R, ví dụ:

# Run an SQL statement by creating first a resultSet object 
rs <- dbSendQuery(con, statement = paste(
         "SELECT w.laser_id, w.wavelength, p.cut_off", 
         "FROM WL w, PURGE P", 
         "WHERE w.laser_id = p.laser_id", 
         "SORT BY w.laser_id") 
# we now fetch records from the resultSet into a data.frame 
data <- fetch(rs, n = -1) # extract all rows 

RMySQL: R giao diện cơ sở dữ liệu MySQL

Cơ sở dữ liệu giao diện và trình điều khiển MySQL cho R. Phiên bản này tuân thủ định nghĩa giao diện cơ sở dữ liệu là được triển khai trong gói DBI 0.2-2.

Cơ sở dữ liệu MySQL:

Sẵn sàng cho tất cả các nền tảng mà bạn trích dẫn trong các câu hỏi, và nhiều hơn nữa, tải here.

+2

Đối với một người dùng, RSQLite dễ thiết lập hơn và khá nhanh. –

+0

Cảm ơn bạn về các ví dụ mã Bakkal. Điều này sẽ được sử dụng cho một người dùng. Có một lợi thế để sử dụng MySQL hơn là SQLite cho ứng dụng này? – ProbablePattern

+0

Bạn có thể sử dụng DB đơn giản nhất cho tác vụ hiện tại và sau đó chuyển sang một công việc hoàn chỉnh hơn sau này nếu bạn thiếu một tính năng hữu ích :) – bakkal

14

bình luận nhanh:

  • R là tốt lúc này, như một ngôn ngữ cho lập trình với dữ liệu, có rất nhiều giao diện
  • Có cả một manual dành cho việc nhập dữ liệu/xuất khẩu, và nó có một section on relational databases, vì vậy hãy bắt đầu ở đó.
  • R có gói DBI được sử dụng rộng rãi, cung cấp giao diện thống nhất cho nhiều chương trình phụ trợ, trong đó có SQLite, MySQL, PostgreSQL, Oracle, ... Sử dụng, có thể với RSQLite để tải nhanh. Bạn vẫn có thể chuyển đổi các chương trình phụ trợ sau đó.
  • Ngoài ra còn có RODBC nhưng tôi thấy ODBC tẻ nhạt khi làm việc cùng.
  • R cũng có một biến thể chuyên biệt trong gói TSdbi của Paul Gilbert, mang đến sự trừu tượng hóa của DBI cho cơ sở dữ liệu thời gian. Nó cũng hỗ trợ nhiều backend.
  • Gói data.table được viết cho điều này và rất nhanh về lập chỉ mục và tổng hợp.
+0

Cảm ơn bạn vì tài nguyên. Cho đến nay, SQLite có vẻ thích hợp nhất cho trình độ kỹ năng của tôi. – ProbablePattern

+0

Hmm, có vẻ như DBI đã chết vào năm 2009. Mọi thứ mới hơn? –

+0

@SteveBennett: Không, [DBI] (http://cran.r-project.org/web/packages/DBI/index.html) vẫn còn hoạt động và hiện tại, nhưng _no sửa lỗi đã được thực hiện từ năm 2009_ khác. Và DBI chỉ là một giao diện như tôi đã viết. –

1

Bạn có thực sự cần giải pháp cơ sở dữ liệu cho mục đích của mình không? Bạn nói rằng bạn muốn có một "giải pháp để lưu trữ dữ liệu ở các bước trung gian" - làm thế nào về việc đơn giản lưu mảng dữ liệu vào đĩa tại các điểm thời gian cần thiết?

Chỉnh sửa: để có thể truy xuất thông tin, bạn có thể nhúng thông tin meta, ví dụ: chỉ mục dùng thử và/hoặc dấu thời gian, trong tên tệp. Sau đó, bạn có thể định vị và tải tệp bằng tên tệp chính xác.

+0

Tôi tương đối mới đối với R nhưng có vẻ như điều này sẽ tạo ra hàng trăm tệp và làm cho việc kiểm toán trở nên khó khăn khi tôi hoàn thành. Mỗi lần chạy mô phỏng yêu cầu tạo một vài mảng ba chiều và tôi chỉ có thể chạy khoảng 5.000 mô phỏng cùng một lúc. Mục tiêu hiện tại của tôi là chạy 50.000 lượt. Nếu có một cách tốt hơn để lưu trữ mảng ba chiều vào đĩa và đọc kết quả của họ sau này một cách có hệ thống, tôi chắc chắn sẽ đánh giá cao sự hướng dẫn. – ProbablePattern

1

Bạn cũng có thể xem gói ff.

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