ifelse在R中使用mutate,为什么不在knitr?

时间:2015-06-21 09:15:56

标签: r knitr dplyr

我有这行代码在“正常”R:

中工作
damage <- damage %>% mutate( EVTYPE = ifelse(grepl("winter", EVTYPE,
    ignore.case=T), "Winter Weather", EVTYPE))

然而,knitr中完全相同的代码行会导致奇怪的行为。如果grep失败,而不是单独放置EVTYPE的值,而是将其更改为数字。也许是一个指数。

头部R的输出(唯一(损坏$ EVTYPE))是:

  

[1]“TORNADO”“TSTM WIND”“HAIL”“ICE STORM / FLASH FLOOD”
  [5]“冬季天气”“HURRICANO OPAL / HIGH WINDS”

而在knitr中它是:

  

[1]“407”“423”“134”“239”
   [5]“冬季天气”“223”

这是一个错误吗?是否有某种原因预计这不会在knitr中起作用?

1 个答案:

答案 0 :(得分:4)

看起来在你的R环境中它是一个角色向量,而在你的编织环境中它是一个因素。您是否忘记在read.table或data.frame上使用stringsAsFactors = FALSE?