Chapter 4 WorkFlow:Script

R Studio Screen

Runing Code

use ctl-enter to run the command at the cursor location

library(nycflights13)
package <U+393C><U+3E31>nycflights13<U+393C><U+3E32> was built under R version 3.3.3

Best practice: you can put comments about what to install or which directory to setwd() but NEVER inlcude install.packages() or setwd() in your script.

R Studio Diagnostics

when you have an error in the code, you will see R put a red X along the line. If you hover over that red X, it will popup details of what the problem is.

# there is a syntax error here on purpose
# hover over the red x to see why it is an error

x y <- 10
Exercise: ,/br> go to @rstudiotips in twitter to find one tip that you like

For me, its: https://www.rstudio.com/resources/webinars/extracting-data-from-the-web-part-1/

library(httr)
url <- "http://www.omdbapi.com/?t=frozen&y=2013&plot=short&r=json"
frozen <- GET(url)
frozen
Response [http://www.omdbapi.com/?t=frozen&y=2013&plot=short&r=json]
  Date: 2017-04-04 03:37
  Status: 200
  Content-Type: application/json; charset=utf-8
  Size: 1.28 kB
details <- content(frozen, "parse")
details$Year
[1] "2013"

Go visit: https://support.rstudio.com/hc/en-us/articles/205753617-Code-Diagnostics

Enabling Diagnostics

Diagnostics can be enabled and options can be set within the Global Options -> Code -> Diagnostics editing pane:

Enable diagnostics within R function calls

Controls whether diagnostics are performed within function calls, e.g. dplyr::select(mtcars, mpg, cyl). Toggle this if your code makes heavy use of non-standard evaluation, and RStudio is unable to produce correct diagnostics for you.

Check arguments to R function calls

Try to detect whether a particular call to a function will succeed. The diagnostics engine will report if it detects missing arguments, unmatched arguments, partially matched arguments, and too many arguments.

For example, in the code sample below, RStudio detects that the function add_numbers is missing the y argument. Note that it is not necessary for add_numbers to exist in the current environment (ie, within the running R session)

Similarly, missing arguments (alongside extra, or missing, commas) are reported:

Warn if variable is defined but not used

This diagnostic helps to identify is a variable is created but never used. This can be helpful when attempting to clean up old code, or in diagnosing other errors (wherein you believe a particular variable should be used, but isn’t).

In the following example, the variable result is assigned but never used or returned; instead, the sum is re-computed and then returned.

Provide R style diagnostics (e.g. whitespace)

The style diagnostic checks to see if your code conforms to Hadley Wickham’s style guide, and reports style warnings when encountered. In particular, the diagnostics engine attempts to identify inappropriate use (or lack thereof) of whitespace.

Currently, the style diagnostics feature is not user configurable; this may be addressed in an upcoming release.

LS0tDQp0aXRsZTogIlIgRm9yIERhdGEgU2NpZW5jZSBDaGFwdGVyIDQiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQo8aDE+IENoYXB0ZXIgNCBXb3JrRmxvdzpTY3JpcHQgPC9oMT4NCg0KUiBTdHVkaW8gU2NyZWVuDQoNCjxpbWcgc3JjPSJodHRwOi8vZGVyZWtvZ2xlLmNvbS9JRkFSL3N1cHBsZW1lbnRzL2luc3RhbGxhdGlvbnMvZmlndXJlcy9SU3R1ZGlvX0ludHJvX0xheW91dC5QTkciPiA8L2ltZz4NCjxoMj4gUnVuaW5nIENvZGUgPC9oMj4NCnVzZSBjdGwtZW50ZXIgdG8gcnVuIHRoZSBjb21tYW5kIGF0IHRoZSBjdXJzb3IgbG9jYXRpb24NCg0KYGBge3J9DQoNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KG55Y2ZsaWdodHMxMykNCg0KIyBwdXQgeW91ciBjdXJzb3Igb24gdGhpcyBsaW5lIGFuZCBoaXQgY3RybC1lbnRlciB0byBydW4gdGhlIGNvbW1tYW5kcyANCm5vdF9jYW5jZWxsZWQgPC0gZmxpZ2h0cyAlPiUNCiAgZmlsdGVyKCFpcy5uYShkZXBfZGVsYXkpLCAhaXMubmEoYXJyX2RlbGF5KSkNCg0Kbm90X2NhbmNlbGxlZCAlPiUNCiAgZ3JvdXBfYnkoeWVhciwgbW9udGgsIGRheSkgJT4lDQogIHN1bW1hcml6ZShtZWFuKGRlcF9kZWxheSkpDQoNCg0KYGBgDQoNCkJlc3QgcHJhY3RpY2U6IHlvdSBjYW4gcHV0IGNvbW1lbnRzIGFib3V0IHdoYXQgdG8gaW5zdGFsbCBvciB3aGljaCBkaXJlY3RvcnkgdG8gc2V0d2QoKSBidXQgTkVWRVIgaW5sY3VkZSBpbnN0YWxsLnBhY2thZ2VzKCkgb3Igc2V0d2QoKSBpbiB5b3VyIHNjcmlwdC4NCg0KPEgyPiBSIFN0dWRpbyBEaWFnbm9zdGljcyA8aDI+DQoNCndoZW4geW91IGhhdmUgYW4gZXJyb3IgaW4gdGhlIGNvZGUsIHlvdSB3aWxsIHNlZSBSIHB1dCBhIHJlZCBYIGFsb25nIHRoZSBsaW5lLiBJZiB5b3UgaG92ZXIgb3ZlciB0aGF0IHJlZCBYLCBpdCB3aWxsIHBvcHVwIGRldGFpbHMgb2Ygd2hhdCB0aGUgcHJvYmxlbSBpcy4gDQoNCmBgYHtyfQ0KIyB0aGVyZSBpcyBhIHN5bnRheCBlcnJvciBoZXJlIG9uIHB1cnBvc2UNCiMgaG92ZXIgb3ZlciB0aGUgcmVkIHggdG8gc2VlIHdoeSBpdCBpcyBhbiBlcnJvcg0KDQp4IHkgPC0gMTANCg0KYGBgDQoNCkV4ZXJjaXNlOiAsL2JyPg0KZ28gdG8gQHJzdHVkaW90aXBzIGluIHR3aXR0ZXIgdG8gZmluZCBvbmUgdGlwIHRoYXQgeW91IGxpa2UgPC9QPg0KDQpGb3IgbWUsIGl0czogaHR0cHM6Ly93d3cucnN0dWRpby5jb20vcmVzb3VyY2VzL3dlYmluYXJzL2V4dHJhY3RpbmctZGF0YS1mcm9tLXRoZS13ZWItcGFydC0xLyANCmBgYHtyfQ0KbGlicmFyeShodHRyKQ0KDQp1cmwgPC0gImh0dHA6Ly93d3cub21kYmFwaS5jb20vP3Q9ZnJvemVuJnk9MjAxMyZwbG90PXNob3J0JnI9anNvbiINCg0KZnJvemVuIDwtIEdFVCh1cmwpDQpmcm96ZW4NCg0KZGV0YWlscyA8LSBjb250ZW50KGZyb3plbiwgInBhcnNlIikNCg0KZGV0YWlscyRZZWFyDQpgYGANCg0KR28gdmlzaXQ6IGh0dHBzOi8vc3VwcG9ydC5yc3R1ZGlvLmNvbS9oYy9lbi11cy9hcnRpY2xlcy8yMDU3NTM2MTctQ29kZS1EaWFnbm9zdGljcyANCg0KRW5hYmxpbmcgRGlhZ25vc3RpY3MNCg0KRGlhZ25vc3RpY3MgY2FuIGJlIGVuYWJsZWQgYW5kIG9wdGlvbnMgY2FuIGJlIHNldCB3aXRoaW4gdGhlIEdsb2JhbCBPcHRpb25zIC0+IENvZGUgLT4gRGlhZ25vc3RpY3MgZWRpdGluZyBwYW5lOg0KDQo8aW1nIHNyYz0iaHR0cHM6Ly9zdXBwb3J0LnJzdHVkaW8uY29tL2hjL2VuLXVzL2FydGljbGVfYXR0YWNobWVudHMvMjAxNjk2NjM3L1NjcmVlbl9TaG90XzIwMTUtMDQtMzBfYXRfMS41NC4wOF9QTS5wbmciPjwvaW1nPg0KDQoNCjxoMz5FbmFibGUgZGlhZ25vc3RpY3Mgd2l0aGluIFIgZnVuY3Rpb24gY2FsbHMgPC9oMz4NCg0KQ29udHJvbHMgd2hldGhlciBkaWFnbm9zdGljcyBhcmUgcGVyZm9ybWVkIHdpdGhpbiBmdW5jdGlvbiBjYWxscywgZS5nLiBkcGx5cjo6c2VsZWN0KG10Y2FycywgbXBnLCBjeWwpLiBUb2dnbGUgdGhpcyBpZiB5b3VyIGNvZGUgbWFrZXMgaGVhdnkgdXNlIG9mIG5vbi1zdGFuZGFyZCBldmFsdWF0aW9uLCBhbmQgUlN0dWRpbyBpcyB1bmFibGUgdG8gcHJvZHVjZSBjb3JyZWN0IGRpYWdub3N0aWNzIGZvciB5b3UuIDwvcD4NCg0KDQo8aDM+Q2hlY2sgYXJndW1lbnRzIHRvIFIgZnVuY3Rpb24gY2FsbHMgPC9oMz4NClRyeSB0byBkZXRlY3Qgd2hldGhlciBhIHBhcnRpY3VsYXIgY2FsbCB0byBhIGZ1bmN0aW9uIHdpbGwgc3VjY2VlZC4gVGhlIGRpYWdub3N0aWNzIGVuZ2luZSB3aWxsIHJlcG9ydCBpZiBpdCBkZXRlY3RzIG1pc3NpbmcgYXJndW1lbnRzLCB1bm1hdGNoZWQgYXJndW1lbnRzLCBwYXJ0aWFsbHkgbWF0Y2hlZCBhcmd1bWVudHMsIGFuZCB0b28gbWFueSBhcmd1bWVudHMuIDwvcD4NCg0KRm9yIGV4YW1wbGUsIGluIHRoZSBjb2RlIHNhbXBsZSBiZWxvdywgUlN0dWRpbyBkZXRlY3RzIHRoYXQgdGhlIGZ1bmN0aW9uIGFkZF9udW1iZXJzIGlzIG1pc3NpbmcgdGhlIHkgYXJndW1lbnQuIE5vdGUgdGhhdCBpdCBpcyBub3QgbmVjZXNzYXJ5IGZvciBhZGRfbnVtYmVycyB0byBleGlzdCBpbiB0aGUgY3VycmVudCBlbnZpcm9ubWVudCAoaWUsIHdpdGhpbiB0aGUgcnVubmluZyBSIHNlc3Npb24pIDwvcD4NCg0KPGltZyBzcmM9Imh0dHBzOi8vc3VwcG9ydC5yc3R1ZGlvLmNvbS9oYy9lbi11cy9hcnRpY2xlX2F0dGFjaG1lbnRzLzIwMTcxMjM3OC9TY3JlZW5fU2hvdF8yMDE1LTA0LTMwX2F0XzIuMDEuMTdfUE0ucG5nIj4gPC9pbWc+DQoNClNpbWlsYXJseSwgbWlzc2luZyBhcmd1bWVudHMgKGFsb25nc2lkZSBleHRyYSwgb3IgbWlzc2luZywgY29tbWFzKSBhcmUgcmVwb3J0ZWQ6DQo8aW1nIHNyYz0iaHR0cHM6Ly9zdXBwb3J0LnJzdHVkaW8uY29tL2hjL2VuLXVzL2FydGljbGVfYXR0YWNobWVudHMvMjAxNzEyMzk4L1NjcmVlbl9TaG90XzIwMTUtMDQtMzBfYXRfMi4wMy4wNl9QTS5wbmciPiA8L2ltZz4NCg0KPGgzPldhcm4gaWYgdmFyaWFibGUgaXMgZGVmaW5lZCBidXQgbm90IHVzZWQ8L2gzPg0KDQpUaGlzIGRpYWdub3N0aWMgaGVscHMgdG8gaWRlbnRpZnkgaXMgYSB2YXJpYWJsZSBpcyBjcmVhdGVkIGJ1dCBuZXZlciB1c2VkLiBUaGlzIGNhbiBiZSBoZWxwZnVsIHdoZW4gYXR0ZW1wdGluZyB0byBjbGVhbiB1cCBvbGQgY29kZSwgb3IgaW4gZGlhZ25vc2luZyBvdGhlciBlcnJvcnMgKHdoZXJlaW4geW91IGJlbGlldmUgYSBwYXJ0aWN1bGFyIHZhcmlhYmxlIHNob3VsZCBiZSB1c2VkLCBidXQgaXNuJ3QpLg0KDQpJbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIHRoZSB2YXJpYWJsZSByZXN1bHQgaXMgYXNzaWduZWQgYnV0IG5ldmVyIHVzZWQgb3IgcmV0dXJuZWQ7IGluc3RlYWQsIHRoZSBzdW0gaXMgcmUtY29tcHV0ZWQgYW5kIHRoZW4gcmV0dXJuZWQuIA0KDQo8aW1nIHNyYz0iaHR0cHM6Ly9zdXBwb3J0LnJzdHVkaW8uY29tL2hjL2VuLXVzL2FydGljbGVfYXR0YWNobWVudHMvMjAxNjk2ODA3L1NjcmVlbl9TaG90XzIwMTUtMDQtMzBfYXRfMi4wOS4zMl9QTS5wbmciID4gPC9pbWc+DQoNCjxoMz5Qcm92aWRlIFIgc3R5bGUgZGlhZ25vc3RpY3MgKGUuZy4gd2hpdGVzcGFjZSk8L2gzPg0KDQpUaGUgc3R5bGUgZGlhZ25vc3RpYyBjaGVja3MgdG8gc2VlIGlmIHlvdXIgY29kZSBjb25mb3JtcyB0byBIYWRsZXkgV2lja2hhbSdzIHN0eWxlIGd1aWRlLCBhbmQgcmVwb3J0cyBzdHlsZSB3YXJuaW5ncyB3aGVuIGVuY291bnRlcmVkLiBJbiBwYXJ0aWN1bGFyLCB0aGUgZGlhZ25vc3RpY3MgZW5naW5lIGF0dGVtcHRzIHRvIGlkZW50aWZ5IGluYXBwcm9wcmlhdGUgdXNlIChvciBsYWNrIHRoZXJlb2YpIG9mIHdoaXRlc3BhY2UuDQoNCjxpbWcgc3JjPSJodHRwczovL3N1cHBvcnQucnN0dWRpby5jb20vaGMvZW4tdXMvYXJ0aWNsZV9hdHRhY2htZW50cy8yMDE3MTI3MzgvU2NyZWVuX1Nob3RfMjAxNS0wNC0zMF9hdF8yLjE1LjI4X1BNLnBuZyI+IDwvaW1nPg0KDQpDdXJyZW50bHksIHRoZSBzdHlsZSBkaWFnbm9zdGljcyBmZWF0dXJlIGlzIG5vdCB1c2VyIGNvbmZpZ3VyYWJsZTsgdGhpcyBtYXkgYmUgYWRkcmVzc2VkIGluIGFuIHVwY29taW5nIHJlbGVhc2UuDQoNCg==