Ошибка при использовании knitr, но не при выполнении той же команды в консоли
У меня есть отчет, который должен быть записан на основе данных, полученных из баз данных о погоде. До сих пор каждая команда, выполняемая в консоли, давала хорошие результаты, но у меня возникают некоторые странные проблемы с knitr при попытке вывести простой отчет HTML с теми же командами, и я чувствую, что это ошибка, потому что это НЕ должно происходить.
В основном это включает использование команды 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)
Это действительно просто, но knitr не позволит мне опубликовать отчет. Для большей справки, столбец с именем 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 ответ
После поиска в 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"
Вроде нормально работает. Можете ли вы предоставить больше информации относительно вашей проблемы? Что именно ты написал?