在RStudio中执行"编织HTML"时出错"无法打开连接"

Pra*_*hor 17 r rstudio knitr

我在RStudio中尝试"编织HTML"时遇到以下错误.

  |................................                                 |  50%
  ordinary text without R code

  |.................................................................| 100%


processing file: Preview-b0c112a265.Rmd
label: unnamed-chunk-1

Quitting from lines 16-26 (Preview-b0c112a265.Rmd) 
Error in file(file, "rt") : cannot open the connection
Calls: <Anonymous> ... withVisible -> eval -> eval -> read.csv -> read.table -> file
Execution halted
Run Code Online (Sandbox Code Playgroud)

我在64位win8机器上使用RStudio.

Rom*_*rik 19

当您运行"编织HTML"时,代码会尝试在找到的同一目录中查找您正在读取的文件,.Rmd因为knitr将工作目录设置为该路径.据我所知,你有两种选择.

  • 尝试指定文件的绝对路径(不是很强大,但在某些情况下很方便).
  • 找出文件的相对路径.如果你有你的.Rmd文件/和数据/data,相对路径应该是,例如,read.table("./data/myfile.csv"...)..意思是"在这里"(无论在哪里getwd()),两个点向上爬上目录结构,同时指定目录爬下结构.


Jul*_*iel 7

我不知道从什么时候开始这是全局选项的一部分,但是当我偶然发现它并且它没有写在这里时:在全局选项-> Markdown 下,有一个设置:“评估目录中的块”以及何时使用“当前”或“项目”至少对我有用(显然它默认设置为“文档”)


Ban*_*you 5

有时它对Rmd文件的执行路径很烦人,特别是当rmd文件没有存储在项目的根文件夹中时.我在Report文件夹中正常存储rmd以避免项目根目录中的所有临时文件(例如Report/myreport.Rmd).

例如,Resources文件夹中有一个文件myfile.csv.在rmd文件中,我需要使用两个点来指定文件路径:

read.csv('../Resources/myfile.csv')
Run Code Online (Sandbox Code Playgroud)

但是如果我想在Rstudio项目的控制台中测试我的代码,那么文件路径是不正确的,因为正常的工作目录是项目的根文件夹.所以我需要从文件路径中删除两个点:

read.csv('Resources/myfile.csv')
Run Code Online (Sandbox Code Playgroud)

我写了一个简单的函数来解决这个问题(https://github.com/byzheng/rproject).函数project_filepath将生成一个相对于项目根文件夹的新路径.因此工作目录可以是项目中的任何子文件夹.下面的代码适用于Rmd文件和控制台.

library(rproject)
read.csv(project_filepath('Resources/myfile.csv'))
Run Code Online (Sandbox Code Playgroud)