使用knitr时出现错误,但在控制台中执行相同命令时没有错误

时间:2015-12-28 09:21:10

标签: r dataframe knitr gsub

我的报告需要记录从天气数据库中获取的数据。到目前为止,在控制台中执行的每个命令都给出了很好的结果,但是当我尝试使用相同的命令输出一个简单的HTML报告时,我遇到了一些knitr的奇怪问题,我觉得这是一个错误,因为这不应该发生。

它基本上涉及对需要替换的某些值使用gsub()命令。在通常的命令执行中,我能够通过适当的命令替换需要替换的所有必需内容,但是这些相同的命令在编织为HTML时会出现此错误:

Quitting from lines 81-92 (experiment.Rmd) 
Error in `$<-.data.frame`(`*tmp*`, "PROPDMGEXP", value = numeric(0)) : 
replacement has 0 rows, data has 902298
Calls: <Anonymous> ... withVisible -> eval -> eval -> $<- -> $<-.data.frame
Execution halted

我正在使用此命令:

df$column <- gsub('some content', 'replace', df$column)

它非常简单,但编织者不会让我发表报告。为了更多参考,名为PROPDMGEXP的列具有我用数字(0-2)替换它们的字符值,如下所示:

PROPDMGEXP
K
K
M
NA

我用0-2替换它们取决于数据,但为什么knitr会给我错误呢?

编辑:这是完整的参考代码以防万一:

url <- 'some url'
download.file('url', distil = 'xyz.zip')
unzip('xyz.zip')
read.table(xyz.rds)
xyz$PROPDMGEXP <- gsub('K', '1', xyz$PROPDMGEXP)

当我将相同的代码粘贴到Rmd文件中并将其编织为HTML时,错误发生在最后一行。

1 个答案:

答案 0 :(得分:0)

在使用Google搜索“PROPDMGEXP”后,我在Rpubs找到了一个出版物。使用此我找到了数据集,并使用Rmd文件尝试了以下内容:

library(data.table)
wr <- fread("repdata_data_StormData.csv")
unique(wr$PROPDMGEXP)

##  [1] "K" "M" ""  "B" "m" "+" "0" "5" "6" "?" "4" "2" "3" "h" "7" "H" "-"
## [18] "1" "8"

然后

wr$PROPDMGEXP <- gsub("K", "0", wr$PROPDMGEXP)
unique(wr$PROPDMGEXP)

##  [1] "0" "M" ""  "B" "m" "+" "5" "6" "?" "4" "2" "3" "h" "7" "H" "-" "1" 
## [18] "8"

似乎工作正常。您可以提供有关您问题的更多信息吗?你究竟写了什么?