2011-01-28 31 views

Trả lời

4
attach(file);ls(pos=2);detach(pos=2) 

Điều đó sẽ thực hiện. Có lẽ. #untested

+0

Bạn có thể bỏ qua 'pos = 2' trong 'detach', vì' tách()' tách mục 2 trong đường dẫn tìm kiếm theo mặc định. – aL3xa

+1

Tôi đã thử nghiệm đề xuất của Ripley mà tôi tìm thấy trong kho lưu trữ và không gửi nó, vì nó _did_ tải một tập dữ liệu khá lớn mà tôi đã sử dụng làm ví dụ của mình. –

+0

@DWin giải pháp nào? URL? – Spacedman

6

Tôi không nghĩ bạn có thể làm điều đó mà không tải đối tượng.

Một giải pháp có thể là để lưu các đối tượng R với một wrapper để save, chức năng nào sẽ lưu đối tượng VÀ cấu trúc của đối tượng vào tệp Rdata đặc biệt. Sau đó, bạn có thể tải tệp nhị phân đặc biệt bằng trình bao bọc tới load, nơi bạn có thể chỉ định để chỉ liệt kê cấu trúc của dữ liệu.

Tôi đã làm điều gì đó như thế này trong một gói rất cơ bản, có tên là saves, có thể được tìm thấy trên CRAN.


Cập nhật: tôi tạo thành một rất giải pháp siêu dữ liệu đơn giản

save.ls <- function(x, file) { 
    save(list=x, file=file) 
    l <- ls() 
    save(l, file=paste(file, 'ls', sep='')) 
} 
load.ls <- function(file) { 
    attach(paste(file, 'ls', sep='')); 
    return(l) 
    detach(pos=2) 
} 

Lưu với save.ls thay vì save và tải với load.ls để kiểm tra. Thông tin meta được lưu trong tệp riêng biệt (kết thúc bằng "ls"), nhưng cơ chế có thể được cải thiện dễ dàng, ví dụ: tạo một kho lưu trữ tar (như tôi làm trong gói được liên kết ở trên) của đối tượng Rdata và tệp chứa siêu dữ liệu.

+0

Một giải pháp siêu dữ liệu có ý nghĩa. Tôi không biết đậu về các tập tin dữ liệu R và nghĩ rằng họ có thể có siêu dữ liệu nội bộ –

+0

@JD Long: đó là cách duy nhất tôi có thể tưởng tượng. Tôi đã tạo ra một ví dụ nguyên thủy trong câu trả lời ở trên để thể hiện ý tôi. Mặc dù vậy, nó có thể được thực hiện một cách dễ dàng, vì vậy hàm demo này chắc chắn chưa sẵn sàng để sử dụng sản xuất :) – daroczig

+3

Giải pháp siêu dữ liệu trong R đã tồn tại và được gọi là tải lười - xem http://stackoverflow.com/ question/8700619/get-specific-object-from-rdata-file –

2

Trong R v3.0.1, hàm load() có đối số mới. Tải tệp RData với

load("mydata.RData", verbose=TRUE) 

sẽ hiển thị cho bạn các đối tượng được tải. Tất nhiên, nó vẫn có nghĩa là bạn phải tải đối tượng.

1

Có lẽ,

load("myDataFile.RData",ex<-new.env()) 
content=ls.str(ex) 
Các vấn đề liên quan