首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在docker中运行Rscript上的"write.csv“?

如何在docker中运行Rscript上的"write.csv“?
EN

Stack Overflow用户
提问于 2020-07-17 02:08:30
回答 1查看 202关注 0票数 0

我试图通过docker运行一个逻辑回归模型,并在最后生成一个带有结果的csv文件,放在docker镜像的输出文件夹中。但是,我不能让它生成csv,因为我一直收到这个错误:

代码语言:javascript
复制
Warning message:
In predict.lm(object, newdata, se.fit, scale = 1, type = if (type ==  :
  prediction from a rank-deficient fit may be misleading
Error in file(file, ifelse(append, "a", "w")) : 
  cannot open the connection
Calls: write.csv -> eval.parent -> eval -> eval -> write.table -> file
In addition: Warning message:
In file(file, ifelse(append, "a", "w")) :
  cannot open file 'output/predictions.csv': No such file or directory

如果我正在尝试生成csv文件,为什么需要它已经在映像中?有没有办法绕过这个问题呢?

以下是我用于生成模型结果的R代码:

代码语言:javascript
复制
predictAll = predict(model1, type="response", newdata = RatioData)
id <- RatioData$id
predictAllframe <- data.frame(id, predictAll)
write.csv(predictAllframe, file = 'output/predictions.csv', row.names=FALSE)

这是我的dockerfile:

代码语言:javascript
复制
FROM rocker/verse:latest

#R packages
RUN R -e "install.packages('mosaic', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('plyr', repos = 'http://cran.us.r-project.org', dependencies=T)"
RUN R -e "install.packages('dplyr', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('purrr', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('ggplot2', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('caret', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('e1071', repos = 'http://cran.us.r-project.org')"

# Move to the app folder
RUN mkdir /app
WORKDIR /app

# Copy and run the Rscript.
COPY /src/model-1.R .
CMD R -e "source('/src/model-1.R')"

#data
ADD /data1.tar.gz .

# Copy Bash scripts expected by the IT infrastructure
COPY model1command.sh .

# Add executable permission to Bash scripts
RUN chmod +x model1command.sh

model1command.sh文件只包含以下命令:

代码语言:javascript
复制
#!/usr/bin/env Rscript

Rscript /app/model-1.R

我使用的docker run命令如下:

代码语言:javascript
复制
docker run \
     -v $(pwd)/data1:/data:ro \
     -v $(pwd)/output:/output:rw \
     -v $(pwd)/scratch:/scratch:rw \
     awesome-model:v1 bash /app/model1command.sh

非常感谢,我已经花了将近一周的时间来解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2020-07-17 05:41:43

路由的格式不正确,在write.table中替换此名称后,请将任何文件保留在R控制台中并复制正确的名称,例如:

代码语言:javascript
复制
Write.table = (filename, "paste rute"_nombre.csv", row.names=F)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62940986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档