2013-06-12 30 views
5

Vấn đề được giải quyết, xem câu trả lời để biết chi tiết.R knitr: có thể sử dụng kết quả được lưu trong bộ nhớ cache trên các máy khác nhau không?

Tôi muốn chạy một số mã (với knitr) trên một máy chủ mạnh mẽ hơn và sau đó có thể có khả năng thực hiện các thay đổi nhỏ trên máy tính xách tay của riêng tôi. Ngay cả khi sao chép trên toàn bộ thư mục, có vẻ như bộ nhớ cache được xây dựng lại khi biên dịch lại cục bộ, có cách nào để tránh điều đó và thực sự sử dụng kết quả trong bộ nhớ cache không?

Trả lời

5

Cập nhật: sự cố phát sinh từ các phiên bản khác nhau của knitr trên các máy khác nhau.


Lý thuyết, có - nếu bạn không thay đổi gì, bộ nhớ cache sẽ được lưu giữ. Trong thực tế, bạn phải kiểm tra cẩn thận những "thay đổi nhỏ" là gì. The documentation page cho bộ nhớ cache đã giải thích khi bộ nhớ cache sẽ được xây dựng lại và bạn cần phải kiểm tra xem liệu tất cả ba điều kiện có được đáp ứng hay không.

+0

Rất cám ơn câu trả lời của bạn. Tôi đã sao chép qua các thư mục mà không thay đổi bất cứ điều gì trước khi biên dịch lại trên một máy khác, vì vậy tôi đoán rằng 3 điều kiện được đáp ứng. Tôi nhận thấy bây giờ hai máy chạy các phiên bản khác nhau của R (cụ thể là 2.15.1 đầu tiên và 3.0 sau đó tại địa phương). Tuy nhiên tôi không sử dụng tùy chọn cache.extra, nó vẫn có thể là sự khác biệt trong các phiên bản đang nhắc bộ nhớ cache được xây dựng lại? Mặt khác, tôi cũng tự hỏi liệu các vấn đề về thời gian được đề cập bởi @Greg có thể có hiệu lực hay không. – user2252705

+0

Ngày/giờ không quan trọng. Cả phiên bản R đều không quan trọng. Bạn chỉ cần đảm bảo rằng các phiên bản 'knitr' giống nhau trên hai máy, vì vậy hãy kiểm tra' library (knitr); sessionInfo() ' –

+0

Tôi vừa kiểm tra và phát hiện ra rằng các phiên bản' knitr' thực sự khác nhau. Cảm ơn bạn đã đề xuất, tôi sẽ cố gắng làm lại thử nghiệm với cùng phiên bản trên cả hai máy và hy vọng rằng điều này sẽ khắc phục được sự cố. – user2252705

0

Tôi tự hỏi nếu ngoài câu trả lời của @ Yihui nếu quá trình sao chép từ máy này sang máy khác sẽ thay đổi thời gian biểu trên các tệp sao cho chúng trông lỗi thời ngay cả khi không có gì thay đổi.

Xem ngày tháng trên các tệp có liên quan sau khi sao chép. Nếu bạn có thể tìm ra tệp nào cần phải mới hơn các tệp khác thì touch nhập chúng có thể ngăn chặn việc xây dựng lại.

Một tùy chọn khác là chỉ dán các phần chạch trực tiếp để chúng không chạy lại (mặc dù điều đó có nghĩa là bạn phải chạy lại và sửa lại bằng tay nếu bạn thay đổi bất kỳ thứ gì trong các phần đó).

+0

Rất cám ơn câu trả lời của bạn. Có một số tệp trong bộ nhớ cache, để 'chạm' vào chúng theo đúng thứ tự dường như không thực tế lắm. Tôi đoán điều tương tự cũng áp dụng đối với việc dán thủ công, mặc dù tôi không hoàn toàn chắc chắn rằng tôi hiểu ý của bạn. Cảm ơn một lần nữa. – user2252705

+0

@ user2252705, bằng cách dán nó vào tôi có nghĩa là chỉ cần lấy đầu ra từ phần bạn muốn lưu vào bộ đệm và dán nó trực tiếp vào tệp thay vì có các lệnh sẽ tạo đầu ra. –

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