小编ML_*_*ast的帖子

使用 Dockerfile 安装 R 包

我正在尝试使用 Dockerfile 安装 R 包。

\n\n

我安装了图像Rocker/Rstudio

\n\n

Dockerfile的内容是:

\n\n
# Base image https://hub.docker.com/r/rocker/rstudio\nFROM rocker/rstudio:latest\n\n## Create directories\nRUN mkdir -p /rstudio\nRUN mkdir -p /rscripts\n\n\n##Install R packages\nRUN R -e "install.packages(c(\'rvest\', \'jsonlite\', \'data.table\' ,\'stringr\'), repos = \'http://cran.us.r-project.org\')"\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后我构建我的图像执行:docker build -t my_r_image .\n图像构建但软件包未安装,因为我收到此警告:

\n\n
\n

Installing packages into \xe2\x80\x98/usr/local/lib/R/site-library\xe2\x80\x99 (as \xe2\x80\x98lib\xe2\x80\x99 is\n unspecified) Warning: unable to access index for repository\n http://cran.us.r-project.org/src/contrib: cannot open URL\n \'http://cran.us.r-project.org/src/contrib/PACKAGES\'

\n
\n\n

I tried by replacing http://cran.us.r-project.org by = \'http://cran.rstudio.com/\')" but …

r package docker dockerfile

7
推荐指数
1
解决办法
4719
查看次数

启动 ec2 服务器时自动启动 docker

每次我重新启动 ec2 服务器时,我都必须执行以下操作: sudo systemctl start docker然后docker-compose up -d启动所有容器。
有没有办法在实例开始时自动运行这两个命令?我已经阅读了这个答案,我认为理想情况下我想知道如何做到这一点:

创建一个 systemd 服务并启用它。所有启用的系统服务将在通电时启动。

你知道如何创建这样的 systemd 服务吗?

[编辑 1]:按照 Chris William 的评论,这是我所做的:

谢谢 Chris,所以我创建了一个docker_boot.service,内容如下:

[Unit]
Description=docker boot
After=docker.service

[Service]
Type=simple
Restart=always
RestartSec=1
User=ec2-user
ExecStart=/usr/bin/docker-compose -f docker-compose.yml up

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

我在/etc/systemd/system文件夹中创建它

然后我做了:

sudo systemctl enable docker
sudo systemctl enable docker_boot
Run Code Online (Sandbox Code Playgroud)

当我打开服务器时,唯一正在运行的 Docker 图像是certbot/certbottelethonkids/shinyproxy
请在我的docker-compose.yml文件内容下方找到。
您是否看到缺少什么以便所有图像都启动并运行?

version: "3.5"
services:
  rstudio:
    environment:
      - USER=username
      - PASSWORD=password
    image: "rocker/tidyverse:latest"
    build: …
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 amazon-web-services systemd docker docker-compose

7
推荐指数
2
解决办法
3944
查看次数

如何在 CentOs 中添加新的存储库

我正在尝试在 EC2 实例上从 R 安装 readR 包。

我在这篇文章中找到了解决方案:

我想要 CentOS 的脚本,但答案是 Ubuntu:

[1] apt-get update     # refresh
[2] apt-get install software-properties-common
[3] add-apt-repository -y "ppa:marutter/rrutter"
[4] add-apt-repository -y "ppa:marutter/c2d4u"
[5] apt-get update     # now with new repos
[6] apt-get install r-cran-readr
Run Code Online (Sandbox Code Playgroud)

下面是我的翻译尝试,我知道第 2 行在我的情况下不是必需的,我缺少的是允许在 CentOs 中添加存储库的两行:

sudo yum update
sudo mkdir ppa:marutter/rrutter
sudo mkdir ppa:marutter/c2d4u
sudo yum update
sudo yum install r-cran-readr
Run Code Online (Sandbox Code Playgroud)

非常感谢帮助!

sudo r centos amazon-ec2 mkdir

6
推荐指数
1
解决办法
2350
查看次数

多个 Dockerfile 的一个 R 包文件

我已经构建了两个Docker 镜像,一个是我的rstudio镜像,另一个是运行我的 cronjobs(R 脚本)的cron镜像。 我正在构建其他图像(Shiny 等),它们需要与 cron 图像和 rstudio 图像完全相同的 R 包。 所以我想要一个文件,我可以在其中列出不同图像所需的所有 R 包。我的文件夹的结构如下:

??? cron
?   ??? crontab
?   ??? Dockerfile
??? rstudio
?   ??? Dockerfile
??? r_packages.txt
Run Code Online (Sandbox Code Playgroud)

例如,对于我的rstudio映像的Dockerfile,我尝试了以下操作:

FROM rocker/tidyverse:3.6.1

## Create directories
RUN mkdir -p /rstudio
RUN mkdir -p /rscripts

RUN cat /home/ec2-user/r_packages.txt
Run Code Online (Sandbox Code Playgroud)

r_packages.txt的内容如下:

R -e "install.packages(c('writexl','readxl','rjson','httr','rvest','DBI','RPostgres','stringr','xlsx','knitr','kableExtra','devtools','RSelenium'))"
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

cat: /home/ec2-user/r_packages.txt: 没有那个文件或目录

因为我认为r_packages.txt应该与我的rstudio Dockerfile位于同一目录中,但我希望我的 r_packages 可用于我的所有图像,我该如何实现?

r package docker install.packages dockerfile

5
推荐指数
1
解决办法
143
查看次数

Rvest html_nodes span div 和 Xpath

我正在尝试通过阅读 XPath 代码来抓取网站。当我进入开发人员部分时,我看到这些行:

<span class="js-bestRate-show" data-crid="11232895" data-id="928723" data-abc="0602524361510" data-referecenceta="44205406" data-catalog="1">
Run Code Online (Sandbox Code Playgroud)

我想抓取 data-abc 的所有值。假设网站上的每个元素都是一部电影,所以我想抓取页面上每部电影的所有 data-abc 元素。

我想使用带有 R 的 Rvest 包来做到这一点。下面是两种不同的尝试,但没有成功...

website %>% html_nodes("js-bestRate-show") %>% html_text()

website %>%
  html_nodes(xpath = "js-bestRate-show") %>%
  html_nodes(xpath = "//div") %>%
  html_nodes(xpath = "//span") %>%
  html_nodes(xpath = "//data-abc")
Run Code Online (Sandbox Code Playgroud)

有人知道 html_nodes 和 Rvest 是如何工作的吗?

xpath r rvest

2
推荐指数
1
解决办法
4865
查看次数

将 R 脚本的输出传递给 bash 脚本

我想将 R 文件的输出传递给 bash 脚本。R 脚本的输出是视频的标题:“视频标题”

我的 bash 脚本很简单:

youtube-dl title_of_video.avi  https://www.youtube.com/watch?v=w82a1FTere5o88
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望视频的输出为“视频标题”.avi

我知道我可以使用 Rscript 通过 bash 命令启动 R 脚本,但我不认为 Rscript 可以在这里帮助我。

bash r

2
推荐指数
1
解决办法
975
查看次数

在 RStudio 中运行 cron 作业

我正在尝试通过 EC2 实例上的 RStudio 安排 cron 作业。
当我使用具有非常基本功能的基本脚本时,它工作得很好。但是,当我想要安排一个包含特定 R 包中的 R 函数的脚本时,脚本会失败。

我的 cron 看起来像这样:

MAILTO="myemail@adress.com"
36 * * * * /home/user1/Test_for_Cron.R
Run Code Online (Sandbox Code Playgroud)

脚本启动后,我收到一封来自 Cron Daemon 的电子邮件,其中指定了以下内容:

R_function中的错误:找不到函数R_function
执行已停止

根据我的发现,我似乎必须指定我想要在 RStudio 中运行脚本或者我想要“获取”它。
我感觉答案可能就在下面这 3 篇文章的组合中,但在测试了一些建议后我没有找到解决方案:

检查 R 是否正在 RStudio
Cron 作业中运行,以查找 R 脚本失败的
R 命令,用于将工作目录设置为 Rstudio 中的源文件位置

非常感谢帮助!

cron r rstudio

1
推荐指数
1
解决办法
2273
查看次数