

{"id":841,"date":"2012-03-07T02:00:27","date_gmt":"2012-03-07T07:00:27","guid":{"rendered":"http:\/\/rud.is\/b\/?p=841"},"modified":"2017-03-27T09:40:25","modified_gmt":"2017-03-27T14:40:25","slug":"thinkstats-1-3","status":"publish","type":"post","link":"https:\/\/rud.is\/b\/2012\/03\/07\/thinkstats-1-3\/","title":{"rendered":"ThinkStats \u2026 in R :: Example 1.3"},"content":{"rendered":"<p>With <a href=\"https:\/\/rud.is\/b\/2012\/03\/04\/thinkstats-in-r-including-example-1-2\/\">1.2 under our belts<\/a>, we go now to the example in section 1.3 which was designed to show us how to partition a larger set of data into subsets for analysis. In this case, we&#8217;re going to jump to example 1.3.2 to determine the number of live births.<\/p>\n<p>While the Python loop is easy to write, the R code is even easier:<\/p>\n<pre lang=\"rsplus\" line=\"1\">livebirths <- subset(pregnancies,outcome==1)<\/pre>\n<p><b>First<\/b>: <i>don't<\/i> let the <code><-<\/code> throw you off. It's just a more mathematical presentation of \"<code>=<\/code>\" (the assignment operator). While later versions of R support using <code>=<\/code> for assignment operations, it's considered good form to continue to use the left arrow.<\/p>\n<p>The <code>subset<\/code> function will traverse <code>pregnancies<\/code>, looking for fields (variables) that meet the boolean expression <code>outcome == 1<\/code> and place all those records into <code>livebirths<\/code>. <\/p>\n<p>You can apply any amount of field logic to the <code>subset<\/code> function, as asked for by example 1.3.3:<\/p>\n<pre lang=\"rsplus\" line=\"1\">firstbabies <- subset(pregnancies,birthord==1 &#038; outcome==1)<\/pre>\n<p>Since R was built for statistical computing, it's no surprise that to solve example 1.3.4 all we have to do is ask R to return the <a href=\"http:\/\/mathworld.wolfram.com\/StatisticalMedian.html\">mean<\/a> of that portion of the data frame:<\/p>\n<pre lang=\"rsplus\" line=\"1\">mean(firstbabies$prglength)\r\nmean(notfirstbabies$prglength)<\/pre>\n<p>(Here's <span class=\"removed_link\" title=\"http:\/\/msenux.redwoods.edu\/math\/R\/dataframe.php\">a refresher on the basics of R data frame usage<\/span> in case you skipped over that URL in the first post.)<\/p>\n<p>To get the ~13hrs difference the text states, it's simple math. Just subtract the two values, multiply by 7 (days in a week) and then again by 24 (hours in a day).<\/p>\n<p>In the next post, we'll begin to tap into the more visual side of R, but for now, play around with the following source code as you finish working through chapter one of <a href=\"https:\/\/www.amazon.com\/gp\/product\/1449307116?ie=UTF8&#038;tag=rudisdotnet-20&#038;linkCode=shr&#038;camp=213733&#038;creative=393185&#038;creativeASIN=1449307116\">Think Stats<\/a> (you can also download the book for free from <a href=\"http:\/\/greenteapress.com\/thinkstats\/\">Green Tea Press<\/a>).<\/p>\n<pre lang=\"rsplus\" line=\"1\"># ThinkStats in R by @hrbrmstr\r\n# Example 1.3\r\n# File format info: http:\/\/www.cdc.gov\/nchs\/nsfg\/nsfg_cycle6.htm\r\n\r\n# setup a data frame that has the field start\/end info\r\n\r\npFields <- data.frame(name  = c('caseid', 'nbrnaliv', 'babysex', 'birthwgt_lb','birthwgt_oz','prglength', 'outcome', 'birthord',  'agepreg',  'finalwgt'), \r\n                      begin = c(1, 22, 56, 57, 59, 275, 277, 278, 284, 423), \r\n                      end   = c(12, 22, 56, 58, 60, 276, 277, 279, 287, 440) \r\n) \r\n\r\n# calculate widtds so we can pass them to read.fwf()\r\n\r\npFields$width <- pFields$end - pFields$begin + 1 \r\n\r\n# we aren't reading every field (for the book exercises)\r\n\r\npFields$skip <-  (-c(pFields$begin[-1]-pFields$end[-nrow(pFields)]-1,0)) \r\n\r\nwidths <- c(t(pFields[,4:5])) \r\nwidths <- widths[widths!=0] \r\n\r\n# read in the file\r\n\r\npregnancies <- read.fwf(\"2002FemPreg.dat\", widths) \r\n\r\n# assign column names\r\n\r\nnames(pregnancies) <- pFields$name \r\n\r\n# divide mother's age by 100\r\n\r\npregnancies$agepreg <- pregnancies$agepreg \/ 100\r\n\r\n# convert weight at birth from lbs\/oz to total ounces\r\n\r\npregnancies$totalwgt_oz = pregnancies$birthwgt_lb * 16 + pregnancies$birthwgt_oz\r\n\r\nrFields <- data.frame(name  = c('caseid'), \r\n                      begin = c(1), \r\n                      end   = c(12) \r\n) \r\n\r\nrFields$width <- rFields$end - rFields$begin + 1 \r\nrFields$skip <-  (-c(rFields$begin[-1]-rFields$end[-nrow(rFields)]-1,0)) \r\n\r\nwidths <- c(t(rFields[,4:5])) \r\nwidths <- widths[widths!=0] \r\n\r\nrespondents <- read.fwf(\"2002FemResp.dat\", widths) \r\nnames(respondents) <- rFields$name\r\n\r\n# exercise 1\r\n# not exactly the same, but even more info is provided in the summary from str()\r\n\r\nstr(respondents)\r\nstr(pregnancies)\r\n\r\n# for exercise 2\r\n# use subset() on the data frames\r\n# again, lazy use of str() for output\r\n\r\nstr(livebirths)\r\n\r\nlivebirths <- subset(pregnancies,outcome==1)\r\n\r\n# exercise 3\r\n\r\nfirstbabies <- subset(pregnancies,birthord==1 &#038; outcome==1)\r\nnotfirstbabies <- subset(pregnancies,birthord > 1 & outcome==1)\r\n\r\nstr(firstbabies)\r\nstr(notfirstbabies)\r\n\r\n# exercise 4\r\n\r\nmean(firstbabies$prglength)\r\nmean(notfirstbabies$prglength)\r\n\r\n\r\nhours = (mean(firstbabies$prglength) - mean(notfirstbabies$prglength)) * 7 * 24 \r\nhours<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>With 1.2 under our belts, we go now to the example in section 1.3 which was designed to show us how to partition a larger set of data into subsets for analysis. In this case, we&#8217;re going to jump to example 1.3.2 to determine the number of live births. While the Python loop is easy [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":true,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[91],"tags":[],"class_list":["post-841","post","type-post","status-publish","format-standard","hentry","category-r"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>ThinkStats \u2026 in R :: Example 1.3 - rud.is<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/rud.is\/b\/2012\/03\/07\/thinkstats-1-3\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ThinkStats \u2026 in R :: Example 1.3 - rud.is\" \/>\n<meta property=\"og:description\" content=\"With 1.2 under our belts, we go now to the example in section 1.3 which was designed to show us how to partition a larger set of data into subsets for analysis. In this case, we&#8217;re going to jump to example 1.3.2 to determine the number of live births. While the Python loop is easy [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rud.is\/b\/2012\/03\/07\/thinkstats-1-3\/\" \/>\n<meta property=\"og:site_name\" content=\"rud.is\" \/>\n<meta property=\"article:published_time\" content=\"2012-03-07T07:00:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-03-27T14:40:25+00:00\" \/>\n<meta name=\"author\" content=\"hrbrmstr\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"hrbrmstr\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/03\\\/07\\\/thinkstats-1-3\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/03\\\/07\\\/thinkstats-1-3\\\/\"},\"author\":{\"name\":\"hrbrmstr\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"headline\":\"ThinkStats \u2026 in R :: Example 1.3\",\"datePublished\":\"2012-03-07T07:00:27+00:00\",\"dateModified\":\"2017-03-27T14:40:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/03\\\/07\\\/thinkstats-1-3\\\/\"},\"wordCount\":277,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"articleSection\":[\"R\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/03\\\/07\\\/thinkstats-1-3\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/03\\\/07\\\/thinkstats-1-3\\\/\",\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/03\\\/07\\\/thinkstats-1-3\\\/\",\"name\":\"ThinkStats \u2026 in R :: Example 1.3 - rud.is\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#website\"},\"datePublished\":\"2012-03-07T07:00:27+00:00\",\"dateModified\":\"2017-03-27T14:40:25+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/03\\\/07\\\/thinkstats-1-3\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/03\\\/07\\\/thinkstats-1-3\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/03\\\/07\\\/thinkstats-1-3\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/rud.is\\\/b\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ThinkStats \u2026 in R :: Example 1.3\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#website\",\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/\",\"name\":\"rud.is\",\"description\":\"&quot;In God we trust. All others must bring data&quot;\",\"publisher\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/rud.is\\\/b\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\",\"name\":\"hrbrmstr\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\",\"width\":460,\"height\":460,\"caption\":\"hrbrmstr\"},\"logo\":{\"@id\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\"},\"description\":\"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7\",\"sameAs\":[\"http:\\\/\\\/rud.is\"],\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/author\\\/hrbrmstr\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ThinkStats \u2026 in R :: Example 1.3 - rud.is","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/rud.is\/b\/2012\/03\/07\/thinkstats-1-3\/","og_locale":"en_US","og_type":"article","og_title":"ThinkStats \u2026 in R :: Example 1.3 - rud.is","og_description":"With 1.2 under our belts, we go now to the example in section 1.3 which was designed to show us how to partition a larger set of data into subsets for analysis. In this case, we&#8217;re going to jump to example 1.3.2 to determine the number of live births. While the Python loop is easy [&hellip;]","og_url":"https:\/\/rud.is\/b\/2012\/03\/07\/thinkstats-1-3\/","og_site_name":"rud.is","article_published_time":"2012-03-07T07:00:27+00:00","article_modified_time":"2017-03-27T14:40:25+00:00","author":"hrbrmstr","twitter_card":"summary_large_image","twitter_misc":{"Written by":"hrbrmstr"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/rud.is\/b\/2012\/03\/07\/thinkstats-1-3\/#article","isPartOf":{"@id":"https:\/\/rud.is\/b\/2012\/03\/07\/thinkstats-1-3\/"},"author":{"name":"hrbrmstr","@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"headline":"ThinkStats \u2026 in R :: Example 1.3","datePublished":"2012-03-07T07:00:27+00:00","dateModified":"2017-03-27T14:40:25+00:00","mainEntityOfPage":{"@id":"https:\/\/rud.is\/b\/2012\/03\/07\/thinkstats-1-3\/"},"wordCount":277,"commentCount":0,"publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"articleSection":["R"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rud.is\/b\/2012\/03\/07\/thinkstats-1-3\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rud.is\/b\/2012\/03\/07\/thinkstats-1-3\/","url":"https:\/\/rud.is\/b\/2012\/03\/07\/thinkstats-1-3\/","name":"ThinkStats \u2026 in R :: Example 1.3 - rud.is","isPartOf":{"@id":"https:\/\/rud.is\/b\/#website"},"datePublished":"2012-03-07T07:00:27+00:00","dateModified":"2017-03-27T14:40:25+00:00","breadcrumb":{"@id":"https:\/\/rud.is\/b\/2012\/03\/07\/thinkstats-1-3\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rud.is\/b\/2012\/03\/07\/thinkstats-1-3\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/rud.is\/b\/2012\/03\/07\/thinkstats-1-3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rud.is\/b\/"},{"@type":"ListItem","position":2,"name":"ThinkStats \u2026 in R :: Example 1.3"}]},{"@type":"WebSite","@id":"https:\/\/rud.is\/b\/#website","url":"https:\/\/rud.is\/b\/","name":"rud.is","description":"&quot;In God we trust. All others must bring data&quot;","publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rud.is\/b\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886","name":"hrbrmstr","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","width":460,"height":460,"caption":"hrbrmstr"},"logo":{"@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1"},"description":"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7","sameAs":["http:\/\/rud.is"],"url":"https:\/\/rud.is\/b\/author\/hrbrmstr\/"}]}},"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p23idr-dz","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":12114,"url":"https:\/\/rud.is\/b\/2019\/03\/26\/rome-was-not-built-in-a-day-but-widgetcard-was\/","url_meta":{"origin":841,"position":0},"title":"Rome Was Not Built In A Day But widgetcard Was!","author":"hrbrmstr","date":"2019-03-26","format":false,"excerpt":"I saw a second post on turning htmlwidgets into interactive Twitter Player cards and felt somewhat compelled to make creating said entities a bit easier so posited the following: Wld this be useful packaged up, #rstats?https:\/\/t.co\/sfqlWnEeJVhttps:\/\/t.co\/troKzmzTNv(TLDR\/V: Single function to turn an HTML widget into a deployable interactive Twitter card) pic.twitter.com\/uahB52YfE2\u2014\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":12383,"url":"https:\/\/rud.is\/b\/2019\/06\/28\/quick-hit-dig-ging-into-dns-records-with-processx\/","url_meta":{"origin":841,"position":1},"title":"Quick hit: &#8216;dig&#8217;-ging Into r-project.org DNS Records with {processx}","author":"hrbrmstr","date":"2019-06-28","format":false,"excerpt":"The r-project.org domain had some temporary technical difficulties this week (2019-29) that made reaching R-related resources problematic for a bunch of folks for a period of time. Incidents like this underscore the need for regional and network diversity when it comes to ensuring the availability of DNS services. That is,\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":12586,"url":"https:\/\/rud.is\/b\/2020\/01\/01\/writing-frictionless-r-package-wrappers-introduction\/","url_meta":{"origin":841,"position":2},"title":"Writing Frictionless R Package Wrappers \u2014 Introduction","author":"hrbrmstr","date":"2020-01-01","format":false,"excerpt":"The R language and RStudio IDE are a powerful combination for \"getting stuff done\", and one aspect of R itself that makes it especially useful is the ability to use it with other programming languages via a robust foreign language interface capability1. The term \"foreign language\" refers to another programming\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":5574,"url":"https:\/\/rud.is\/b\/2017\/04\/01\/superclassing-to-r%e2%81%b6\/","url_meta":{"origin":841,"position":3},"title":"Superclassing to R\u2076","author":"hrbrmstr","date":"2017-04-01","format":false,"excerpt":"To avoid \"branding\" confusion with R\u2074 I'm superclassing it to R\u2076 and encouraging others in the R community to don the moniker and do their own small, focused posts on topics that would help the R community learn things. Feel free to use R\u2076 (I'll figure out an acronym later).\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3796,"url":"https:\/\/rud.is\/b\/2015\/11\/21\/an-os-x-r-task-runner-for-and-a-mini-r-centric-review-of-microsofts-visual-studio-code-editor\/","url_meta":{"origin":841,"position":4},"title":"An OS X R Task Runner for\u2014and a Mini-R-centric review of\u2014Microsoft&#8217;s Visual Studio Code Editor","author":"hrbrmstr","date":"2015-11-21","format":false,"excerpt":"Microsoft's newfound desire to make themselves desirable to the hipster development community has caused them to make many things [open](https:\/\/github.com\/Microsoft\/) and\/or free of late. One of these manifestations is [Visual Studio Code](https:\/\/code.visualstudio.com\/), an [Atom](https:\/\/atom.io\/)-ish editor for us code jockeys. I have friends at Microsoft and the Revolution R folks are\u2026","rel":"","context":"In &quot;Development&quot;","block_context":{"text":"Development","link":"https:\/\/rud.is\/b\/category\/development\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":19774,"url":"https:\/\/rud.is\/b\/2024\/05\/03\/cve-2024-27322-should-never-have-been-assigned-and-r-data-files-are-still-super-risky-even-in-r-4-4-0\/","url_meta":{"origin":841,"position":5},"title":"CVE-2024-27322 Should Never Have Been Assigned And R Data Files Are Still Super Risky Even In R 4.4.0","author":"hrbrmstr","date":"2024-05-03","format":false,"excerpt":"I had not planned to blog this (this is an incredibly time-crunched week for me) but CERT\/CC and CISA made a big deal out of a non-vulnerability in R, and it's making the round on socmed, so here we are. A security vendor decided to try to get some hype\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/841","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/comments?post=841"}],"version-history":[{"count":0,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/841\/revisions"}],"wp:attachment":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media?parent=841"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/categories?post=841"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/tags?post=841"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}