我有一个奇怪的行为与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)
```
答案 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')