我试图通过docker运行一个逻辑回归模型,并在最后生成一个带有结果的csv文件,放在docker镜像的输出文件夹中。但是,我不能让它生成csv,因为我一直收到这个错误:
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代码:
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:
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.shmodel1command.sh文件只包含以下命令:
#!/usr/bin/env Rscript
Rscript /app/model-1.R我使用的docker run命令如下:
docker run \
-v $(pwd)/data1:/data:ro \
-v $(pwd)/output:/output:rw \
-v $(pwd)/scratch:/scratch:rw \
awesome-model:v1 bash /app/model1command.sh非常感谢,我已经花了将近一周的时间来解决这个问题。
发布于 2020-07-17 05:41:43
路由的格式不正确,在write.table中替换此名称后,请将任何文件保留在R控制台中并复制正确的名称,例如:
Write.table = (filename, "paste rute"_nombre.csv", row.names=F)https://stackoverflow.com/questions/62940986
复制相似问题