2013-06-12 8 views
5

Problem rozwiązany, zobacz odpowiedzi szczegółowe.R knitr: czy można używać wyników z pamięci podręcznej na różnych komputerach?

Chciałbym uruchomić kod (z knitr) na silniejszym serwerze, a następnie może mieć możliwość dokonywania drobnych zmian na moim własnym laptopie. Nawet kopiowanie w całym folderze wydaje się, że pamięć podręczna jest przebudowywana podczas ponownego kompilowania lokalnie, czy istnieje sposób, aby tego uniknąć i faktycznie wykorzystać wyniki w pamięci podręcznej?

Odpowiedz

5

Aktualizacja: problem pojawił się w różnych wersjach knitr na różnych komputerach.


Teoretycznie tak - jeśli nic nie zmienisz, pamięć podręczna zostanie zachowana. W praktyce trzeba dokładnie sprawdzić, jakie są "małe zmiany". The documentation page dla bufora podręcznego wyjaśnił, kiedy pamięć podręczna zostanie przebudowana, i musisz sprawdzić, czy wszystkie trzy warunki są spełnione.

+0

Dziękuję za odpowiedź. Skopiowałem przez foldery bez zmiany niczego przed ponownym kompilowaniem na innym komputerze, więc domyślam się, że spełnione są 3 warunki. Zauważyłem, że oba urządzenia działają w różnych wersjach R (najpierw 2.15.1 i 3.0 później lokalnie). Jednak nie używam opcji cache.extra, czy może być tak, że różnica w wersjach powoduje konieczność przebudowania pamięci podręcznej? Z drugiej strony zastanawiałem się również, czy problemy z datetime wspomniane przez @Greg mogą mieć wpływ. – user2252705

+0

Data/czas nie mają znaczenia. Również wersja R nie ma znaczenia. Musisz tylko upewnić się, że wersje 'knitr' są takie same na obu maszynach, więc sprawdź' library (knitr); sessionInfo() ' –

+0

Właśnie sprawdziłem i odkryłem, że wersje' knitr' są w rzeczywistości różne. Dzięki za sugestię, postaram się powtórzyć eksperyment z tą samą wersją na obu komputerach i mam nadzieję, że to rozwiąże problem. – user2252705

0

Zastanawiam się, czy oprócz odpowiedzi @ Yihui, czy proces kopiowania z jednego komputera na inny zmienia czas w plikach, tak aby wyglądały nieaktualne, nawet gdy nic się nie zmieniło.

Sprawdź daty plików po skopiowaniu. Jeśli możesz dowiedzieć się, które pliki muszą być nowsze niż inne, wówczas ich usunięcie może uniemożliwić odbudowę.

Inną opcją byłoby po prostu wkleić bezpośrednio kawałki, aby nie zostały ponownie uruchomione (chociaż oznacza to, że trzeba ręcznie powtórzyć i zmienić ręcznie, jeśli coś zmienisz w tych częściach).

+0

Dziękuję za odpowiedź. W pamięci podręcznej znajduje się wiele plików, więc "dotknięcie" ich we właściwej kolejności nie wydaje się zbyt praktyczne. Przypuszczam, że to samo dotyczy ręcznego wklejania, choć nie jestem do końca pewien, czy rozumiem, co miałeś na myśli. Dzięki jeszcze raz. – user2252705

+0

@ user2252705, wklejając go Mam na myśli po prostu wyjmij dane z części, która ma być buforowana i wklej ją bezpośrednio do pliku, zamiast mieć polecenia, które będą generować dane wyjściowe. –

Powiązane problemy