docker4.9.0.9_如何在Docker中运行R 4.0和3个很酷的R 4.0新功能

docker4.9.0.9

R 4.0中有一些有趣的更改和更新。 在这里,我将看看其中的三个。 另外,我将为您提供有关安装R 4.0的分步说明,以便它不会干扰您现有的R安装-通过在Docker上运行R。

Docker是一个用于创建“容器”的平台-计算机上完全独立的,隔离的环境。 将它们视为系统上的小型系统。 它们包括自己的操作系统,然后包括您要添加的任何内容-应用程序软件,脚本,数据等。容器在很多方面都很有用,但是在这里,我仅关注一个:测试软件的新版本无需搞砸您当前的本地设置。

[ 在InfoWorld的“用R做更多”的视频系列中获取Sharon Machlis的R技巧 | 按任务,主题或程序包搜索“用R做更多”操作视频 ]

在Docker容器中运行R 4.0和RStudio的最新预览版非常容易。 如果您不想遵循本教程的Docker部分,而只想查看R中的新增功能,请向下滚动至“三个R 4.0新功能”部分。

在Docker容器中运行R 4.0

如果您继续,请在系统上安装桌面Docker(如果尚未安装):前往https://www.docker.com/products/docker-desktop并为您的计算机下载正确的桌面版本( Windows,Mac或Linux)。 然后,启动它。 您应该看到系统上某处运行着鲸鱼Docker图标。

Docker图标 沙龙·马克斯(IDG)

Docker图标

接下来,我们需要R 4.0的Docker映像。 您可以将Docker映像视为一组说明,以创建包含特定软件的容器。 感谢Adelmo Filho (巴西的数据科学家)和Rocker R Docker项目,他们提供了一些非常有用的Docker映像。 我只是稍微修改了它们的Docker映像,以制作本教程中使用的映像。

这是在您自己的系统上运行 Docker映像以创建容器的语法。

docker run --rm -p 8787:8787 -v /path/to/local/dir:/home/rstudio/newdir username/docker_image_name:image_tag

docker是您需要启动任何Docker命令的方式。 run表示我要运行图像并根据该图像创建容器。 --rm标志意味着在完成后删除容器。 你不必包括--rm ; 但是如果您运行大量容器并且不删除它们,它们将开始占用大量磁盘空间。 -p 8787:8787仅用于必须在系统端口上运行的映像(RStudio会这样做)(如果打算有朝一日包括,则Shiny也是如此)。 上面的命令指定端口8787,这是RStudio通常的默认端口。

-v创建一个卷。 还记得我说过Docker容器是独立的和隔离的吗? 那意味着孤立 。 默认情况下,容器无法访问其外部的任何内容,而系统的其余部分则无法访问容器内部的任何内容。 但是,如果设置卷,则可以将本地文件夹与容器内的文件夹链接。 然后他们自动同步。 语法:

-v path/to/local/directory:/path/to/container/directory

使用RStudio,通常将/home/rstudio/name_of_new_directory用于容器目录。

docker run命令的末尾是您要运行的映像的名称。 我的映像与许多Docker映像一样,存储在Docker Hub上, Docker HubDocker设置的用于共享映像的服务。 与GitHub一样,您可以通过指定username/reponame来访问项目。 在这种情况下,您通常还添加:the_tag ,如果同一图像的不同版本,则有帮助。

您可以修改以下代码,以在系统上使用R 4.0和RStudio的最新预览版运行我的图像。 确保替换的目录为/用户/ smachlis /文档/ MoreWithR的一个路径 您可以在Mac终端窗口或Windows命令提示符或PowerShell窗口中运行它。

docker run --rm -p 8787:8787 -v /Users/smachlis/Documents/MoreWithR:/home/rstudio/morewithr sharon000/my_rstudio_image:version1

首次运行此命令时,Docker将需要从Docker Hub下载映像,因此可能需要一段时间。 之后,除非您删除图像的本地副本,否则它应该快得多。

现在,当您在浏览器中打开localhost:8787时,应该会看到RStudio。

RStudio登录屏幕 沙龙·马克斯(IDG)

RStudio通过Docker容器在浏览器窗口中运行。

默认的用户名和密码均为rstudio,如果您在云中运行它,那当然会很糟糕。 但是我认为在我的本地计算机上还可以,因为通常我的常规RStudio桌面上没有任何密码。

如果在容器化的R / RStudio中检查R版本,则会看到它是4.0版本。 RStudio的版本应为1.3.947,即本文首次发布时的最新预览版。 这些都是与本地计算机上安装的版本不同的版本。

R 4.0的三个新功能

现在让我们来看一下R 4.0的一些新功能。

新的stringAsFactors默认

在下面的代码中,我正在创建一个简单的数据框,其中包含有关四个城市的信息,然后检查结构。

 City <- c("New York", "San Francisco", "Boston", "Seattle")
 State <- c("NY", "CA", "MA", "Seattle")
 PopDensity <- c(26403, 18838, 13841, 7962)
 densities <- data.frame(City, State, PopDensity)
 str(densities)
 'data.frame':	4 obs. of  3 variables:
 $ City      : chr  "New York" "San Francisco" "Boston" "Seattle"
 $ State     : chr  "NY" "CA" "MA" "Seattle"
 $ PopDensity: num  26403 18838 13841 7962 

注意到任何意外情况吗? 即使我没有指定stringsAsFactors = FALSE. ,城市和州也是字符串stringsAsFactors = FALSE. 是的,最后,R data.frame的默认值为stringsAsFactors = FALSE 。 如果我在较旧的R版本中运行相同的代码,则City和State将是重要因素。

新的调色板和功能

接下来,让我们看一下R 4.0中的新内置函数: palette.pals() 。 这显示了一些内置的调色板。

 palette.pals()
  [1] "R3"              "R4"              "ggplot2"         "Okabe-Ito"      
 [5] "Accent"          "Dark 2"          "Paired"          "Pastel 1"       
 [9] "Pastel 2"        "Set 1"           "Set 2"           "Set 3"          
[13] "Tableau 10"      "Classic Tableau" "Polychrome 36"   "Alphabet" 

另一个新函数palette.colors()给出了有关内置调色板的信息。

 palette.colors(palette = "Tableau 10")
      blue    orange       red lightteal     green    yellow    purple 
"#4E79A7" "#F28E2B" "#E15759" "#76B7B2" "#59A14F" "#EDC948" "#B07AA1" 
     pink     brown lightgray 
"#FF9DA7" "#9C755F" "#BAB0AC"  

如果随后在结果上运行scales包的show_col()函数,则将获得调色板的漂亮彩色显示。

scales::show_col(palette.colors(palette = "Tableau 10"))

显示Tableau 10调色板颜色 沙龙·马克斯(IDG)

缩放结果:: show_col(palette.colors(palette =“ Tableau 10”))。

我做了一个小功能,将两者结合在一起,可以在一行代码中查看某些内置调色板:

display_built_in_palette <- function(my_palette) {
scales::show_col(palette.colors(palette = my_palette))
}
display_built_in_palette("Okabe-Ito")
冈部伊藤调色板的彩色显示 沙龙·马克斯(IDG)

使用我的函数display_built_in_palette()查看Okabe-Ito调色板。

在R的早期版本中,这些代码都scales::show_col() ,因为在R 4.0之前仅scales::show_col()可用。

字符串中的转义字符

最后,让我们看一下一个新函数,该函数可以更轻松地包含通常需要在字符串中转义的字符。

语法为r"(my string here)" 。 这是一个例子:

string1 <-  r"("I no longer need to escape these " double quotes inside a quote," they said.)"

该字符串在一对双引号中包含一个未转义的引号。 如果显示该字符串,则会得到以下信息:

 >  cat(string1)
 "I no longer need to escape these " double quotes inside a quote," they said. 

我还可以在新函数内打印文字\n

 string2 <- r"(Here is a backslash n \n)"
 cat(string2)
 Here is a backslash n \n 

如果没有特殊的r"()"函数,则\n会作为换行符读取,并且不会显示。

 string3 <- "Here is a backslash n \n"
 cat(string3)
 Here is a backslash n  

在此基础R中,您需要使用第二个反斜杠来转义该反斜杠。

 string4 <- "Usual escaped \\n"
 cat(string4)
 Usual escaped \n 

在此示例中,这没什么大不了的,但是当您处理诸如复杂的正则表达式之类的内容时,它可能会变得复杂。

R 4.0中还有更多新功能。 您可以在R项目网站上查看所有详细信息。

有关将Docker与R结合使用的更多信息,请查看rOpenSci Labs简短而出色的R Docker教程

有关更多R技巧,请访问InfoWorld“使用R进行更多操作”页面

翻译自: https://www.infoworld.com/article/3541368/how-to-run-r-40-in-docker-and-3-cool-new-r-40-features.html

docker4.9.0.9

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值