2012-01-20 70 views
14

Gần đây tôi đã bắt đầu sử dụng R và vẫn đang quen với các kiểu dữ liệu của nó, v.v. Tôi đang lấy dữ liệu từ cơ sở dữ liệu, thực hiện tính toán trên dữ liệu và lưu trữ một số kết quả vào cơ sở dữ liệu.Tạo một khung dữ liệu một cách có lập trình và thêm các hàng vào nó

Dữ liệu được tính toán sẽ được lưu trữ trong một bảng cụ thể trong cơ sở dữ liệu. Tôi muốn tạo một khung dữ liệu với các cột khớp với bảng của bảng db (tức là cùng tên và kiểu dữ liệu [gần như]). Để làm được điều đó, tôi cần để có thể làm như sau:

  1. Programatically tạo ra một khung dữ liệu với quy định 'cột' Tôi biết tôi có thể tạo ra điều này với data.frame() nhưng nó không rõ ràng cách tạo khung dữ liệu chỉ với tiêu đề cột, nhưng chưa có dữ liệu (hàng).

  2. Programatically thêm hàng vào khung dữ liệu rỗng tạo ở bước 1 ở trên

Bất kỳ sự giúp đỡ (tốt nhất là với một đoạn) sẽ rất hữu ích

Trả lời

22
empty <- data.frame(a = numeric(), b = factor(), c = character()) 
filled <- rbind(empty, data.frame(a = 1, b = factor("abc"), c = "def")) 

Đây là nó trong hành động:

> empty <- data.frame(a = numeric(), b = factor(), c = character()) 
> empty 
[1] a b c 
<0 rows> (or 0-length row.names) 
> empty$a 
numeric(0) 
> empty$b 
factor(0) 
Levels: 
> empty$c 
character(0) 
> filled <- rbind(empty, data.frame(a = 1, b = factor("abc"), c = "def")) 
> summary(filled) 
     a  b   c    
Min. :1 abc:1 Length:1   
1st Qu.:1   Class :character 
Median :1   Mode :character 
Mean :1        
3rd Qu.:1        
Max. :1 
+0

BTW, tôi có thể thay thế điền <- rbind (trống, dữ liệu.frame (a = 1, b = factor ("abc"), c = "d không ef ")) với: rỗng <- rbind (rỗng, data.frame (a = 1, b = factor (" abc "), c =" def ")) Vì vậy, tôi không tạo khung dữ liệu mới cho mỗi hàng được thêm vào? –

+8

Bạn có thể làm điều đó. Nhưng dù sao đi nữa: bạn đang ở vòng thứ hai của địa ngục R: http://www.burns-stat.com/pages/Tutor/R_inferno.pdf – Thierry

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