Chapter 6 Workflow: Projects

What is Real ?

Consider your R scripts as “Real”. You can use them to re-create your environmnet. It’s much harder to re-create your R scripts from your environment! To foster this behavior , set Rstudio not to preserve your workspace between sessions. Tools -> Global Options -> General -> uncheck [Restore .RData into workspace at startup].

Now when you restart Rstudio it will not remember the results of hte code that you ran last time. But this short term pain will save you long-term agony because it forces you to capture all important interactions in your code.

Keyboard shortcuts to try :
Ctrl-Shift-f10 to restart Rstudio
Ctrl-shift-S to rerun the current script

Where does your analysis live?

R has a working directory. This is where R looks for files that you ask it to load, and where it will put any files that you ask it to save. RStudio shows your current working directory at the top of the console:

getwd()
[1] "G:/RStudio/R4DS"
While you can use setwd() to set the working directory. The recommended way to do it is by ~ (points to the working directory)

RStudio Projects

Experts keep all files relating to a project together in the same directory. Click File -> New Project

It will create a new directory for the new project. Whenever you refer to a file wih a relative path it will look for it here.

Summary

create an RStudio project for each data analysis project
Keep data files there;
Keep scripts there , edit them, and run them in bits or as a whole
Save your outputs (plots and cleaned data) there
Only ever use relative pahs, not absolute paths

LS0tDQp0aXRsZTogIlIgZm9yIERhdGEgU2NpZW5jZSBDaGFwdGVyIDYiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQo8aDE+IENoYXB0ZXIgNiBXb3JrZmxvdzogUHJvamVjdHMgPC9oMT4NCg0KPGgyPiBXaGF0IGlzIFJlYWwgPyA8L2gyPg0KQ29uc2lkZXIgeW91ciBSIHNjcmlwdHMgYXMgIlJlYWwiLiBZb3UgY2FuIHVzZSB0aGVtIHRvIHJlLWNyZWF0ZSB5b3VyIGVudmlyb25tbmV0LiBJdCdzIG11Y2ggaGFyZGVyIHRvIHJlLWNyZWF0ZSB5b3VyIFIgc2NyaXB0cyBmcm9tIHlvdXIgZW52aXJvbm1lbnQhIFRvIGZvc3RlciB0aGlzIGJlaGF2aW9yICwgc2V0IFJzdHVkaW8gbm90IHRvIHByZXNlcnZlIHlvdXIgd29ya3NwYWNlIGJldHdlZW4gc2Vzc2lvbnMuIFRvb2xzIC0+IEdsb2JhbCBPcHRpb25zIC0+IEdlbmVyYWwgLT4gdW5jaGVjayBbUmVzdG9yZSAuUkRhdGEgaW50byB3b3Jrc3BhY2UgYXQgc3RhcnR1cF0uIDwvcD4NCg0KTm93IHdoZW4geW91IHJlc3RhcnQgUnN0dWRpbyBpdCB3aWxsIG5vdCByZW1lbWJlciB0aGUgcmVzdWx0cyBvZiBodGUgY29kZSB0aGF0IHlvdSByYW4gbGFzdCB0aW1lLiBCdXQgdGhpcyBzaG9ydCB0ZXJtIHBhaW4gd2lsbCBzYXZlIHlvdSBsb25nLXRlcm0gYWdvbnkgYmVjYXVzZSBpdCBmb3JjZXMgeW91IHRvIGNhcHR1cmUgYWxsIGltcG9ydGFudCBpbnRlcmFjdGlvbnMgaW4geW91ciBjb2RlLiA8L1A+DQoNCktleWJvYXJkIHNob3J0Y3V0cyB0byB0cnkgOiA8L2JyPg0KQ3RybC1TaGlmdC1mMTAgdG8gcmVzdGFydCBSc3R1ZGlvPC9icj4NCkN0cmwtc2hpZnQtUyB0byByZXJ1biB0aGUgY3VycmVudCBzY3JpcHQ8L2JyPg0KDQo8aDI+IFdoZXJlIGRvZXMgeW91ciBhbmFseXNpcyBsaXZlPzwvaDI+DQpSIGhhcyBhIHdvcmtpbmcgZGlyZWN0b3J5LiBUaGlzIGlzIHdoZXJlIFIgbG9va3MgZm9yIGZpbGVzIHRoYXQgeW91IGFzayBpdCB0byBsb2FkLCBhbmQgd2hlcmUgaXQgd2lsbCBwdXQgYW55IGZpbGVzIHRoYXQgeW91IGFzayBpdCB0byBzYXZlLiBSU3R1ZGlvIHNob3dzIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBhdCB0aGUgdG9wIG9mIHRoZSBjb25zb2xlOiA8L3A+DQoNCg0KYGBge3J9DQpnZXR3ZCgpDQoNCmBgYA0KDQoNCldoaWxlIHlvdSBjYW4gdXNlIHNldHdkKCkgdG8gc2V0IHRoZSB3b3JraW5nIGRpcmVjdG9yeS4gVGhlIHJlY29tbWVuZGVkIHdheSB0byBkbyBpdCBpcyBieSB+IChwb2ludHMgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5KSA8L1A+DQoNCjxoMj4gUlN0dWRpbyBQcm9qZWN0cyA8L2gyPg0KRXhwZXJ0cyBrZWVwIGFsbCBmaWxlcyByZWxhdGluZyB0byBhIHByb2plY3QgdG9nZXRoZXIgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LiAgQ2xpY2sgRmlsZSAtPiBOZXcgUHJvamVjdA0KPGltZyBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vdXJsP3NhPWkmcmN0PWomcT0mZXNyYz1zJnNvdXJjZT1pbWFnZXMmY2Q9JmNhZD1yamEmdWFjdD04JnZlZD0wYWhVS0V3amk5ZG5fbzR6VEFoVUtONDhLSFpvS0RPc1FqUndJQncmdXJsPWh0dHAlM0ElMkYlMkZyLXBrZ3MuaGFkLmNvLm56JTJGcGFja2FnZS5odG1sJnBzaWc9QUZRakNOSDJwYkhtM29wcWNqd0ZZRF9mbF82T3ExN3h4ZyZ1c3Q9MTQ5MTQ0NjE0NDI2OTA3NSI+IDwvaW1nPg0KDQpJdCB3aWxsIGNyZWF0ZSBhIG5ldyBkaXJlY3RvcnkgZm9yIHRoZSBuZXcgcHJvamVjdC4gV2hlbmV2ZXIgeW91IHJlZmVyIHRvIGEgZmlsZSB3aWggYSByZWxhdGl2ZSBwYXRoIGl0IHdpbGwgbG9vayBmb3IgaXQgaGVyZS4gIDwvcD4NCg0KPGgyPiBTdW1tYXJ5IDwvaDI+IA0KY3JlYXRlIGFuIFJTdHVkaW8gcHJvamVjdCBmb3IgZWFjaCBkYXRhIGFuYWx5c2lzIHByb2plY3QgPC9icj4NCktlZXAgZGF0YSBmaWxlcyB0aGVyZTsgPC9icj4NCktlZXAgc2NyaXB0cyB0aGVyZSAsIGVkaXQgdGhlbSwgYW5kIHJ1biB0aGVtIGluIGJpdHMgb3IgYXMgYSB3aG9sZSA8L2JyPg0KU2F2ZSB5b3VyIG91dHB1dHMgKHBsb3RzIGFuZCBjbGVhbmVkIGRhdGEpIHRoZXJlPC9icj4NCk9ubHkgZXZlciB1c2UgcmVsYXRpdmUgcGFocywgbm90IGFic29sdXRlIHBhdGhzIDwvcD4NCg==