2016-01-24 14 views
6

Tôi muốn sao chép toàn bộ nội dung của khung dữ liệu đã được đọc từ tệp csv. Tôi không tin rằng đó là một sự trùng lặp nếu tôi làm copyOfFirstFrame < - firstFrame. Vậy tôi cần làm gì?Làm cách nào để tạo bản sao của khung dữ liệu trong R

firstFrame <- read_csv("fileName.csv") 
copyOfFirstFrame <- ????? 

nếu tôi làm như sau địa chỉ bộ nhớ vẫn giữ nguyên copyOfFirstFrame < - firstFrame

ví dụ

copyOfFirstFrame <- firstFrame 
tracemem(firstFrame) == tracemem(copyOfFirstFrame) 
[1] TRUE 

Bản sao phải có hai địa chỉ bộ nhớ duy nhất. Kiểm tra In R, how can I check if two variable names reference the same underlying object? để biết chi tiết.

+1

Nếu tôi làm điều đó và so sánh địa chỉ bộ nhớ, chúng vẫn là cùng một đối tượng trong bộ nhớ. Tôi đã cập nhật chi tiết câu hỏi – user1605665

Trả lời

6

Sử dụng cbind với một data.frame sẽ đảm bảo bạn có một bản sao:

> df <- cbind(NA, NA) 
> df2 <- cbind(df) 
> df2 
    [,1] [,2] 
[1,] NA NA 
> df2[,1] <- 1 
> df 
    [,1] [,2] 
[1,] NA NA 
> df2 
    [,1] [,2] 
[1,] 1 NA 
> 
2

Hãy DỮ LIỆU là một đối tượng khung dữ liệu tồn tại trước đó. Tôi đang tạo một đối tượng mới, COPY là bản sao DATA chính xác, nhưng nó chiếm một vị trí bộ nhớ khác và do đó không trỏ đến khung dữ liệu gốc.

Tôi sử dụng chức năng data.frame() như thế này:

> COPY<-data.frame(DATA) 

tôi kiểm tra xem địa chỉ bộ nhớ là cùng hoặc không sử dụng tracemem():

> tracemem(COPY)==tracemem(DATA) 
> [1] FALSE 

đủ Lame, tôi nghĩ .

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