R Markdown无法找到文件,但执行块工作

时间:2015-02-18 10:04:29

标签: r markdown r-markdown

我有一个奇怪的行为与r markdown和读取txt文件...只在Windows 7机器上。我的Mac上没有问题,还没有在Windows 8上检查过它。

我有一个基本的降价文件

---
title: "Untitled"
output: html_document
---
```{r global_options, message=FALSE}
setwd('E:/Falk')
list.files(pattern='test')
```

```{r global variable settings, eval=TRUE}
pg_filename <- 'test.txt' 
pg <- read.delim (pg_filename)
```

如果我在最后一个块中设置eval = FALSE,则会创建html并使用我的test.txt文件获取列表。如果我设置eval = TRUE,我收到一条错误消息,表示无法找到该文件:

Quitting from lines 11-13 (Preview-2b2464944991.Rmd) 
Error in file(file, "rt") : cannot open the connection
Calls: <Anonymous> ... withVisible -> eval -> eval -> read.delim -> read.table -> file

Execution halted

如果我将所有内容放在一个块中,则会创建html。

有谁知道问题是什么?

修改 也许我不够清楚。我知道eval = TRUE和FALSE之间的区别但我不知道在markdown中测试某些内容的方法,如果有错误消息,但一切都在块中工作正常。

所以,为了更清楚:

WORKS:

---
title: "Untitled"
output: html_document
---
```{r}
setwd('E:/Falk')
list.files(pattern='test')
pg_filename <- 'test.txt' 
pg <- read.delim (pg_filename)
```

不工作:

---
title: "Untitled"
output: html_document
---
```{r}
setwd('E:/Falk')
list.files(pattern='test')
```

```{r}
pg_filename <- 'test.txt' 
pg <- read.delim (pg_filename)
```

1 个答案:

答案 0 :(得分:0)

You cannot use setwd in knitr, and you shouldn’t use it in your R code anyway.您需要专门使用相对路径

特别是,setwd在其当前块之外没有任何影响 - 其他块将在文档的路径中进行评估,而不是在设置路径中进行评估。

通常,setwd只应由用户在交互式会话中使用,或者在项目配置文件(本地.Rprofile文件中)中用于设置项目目录。 It has no place in scripts.

setwd的最直接等价物是使用knitr选项root.dir

opts_knit$set(root.dir = 'some/dir')