0
我在「正常」 R工作這行代碼:ifelse在R中與變異一起工作,爲什麼不在knitr中?
damage <- damage %>% mutate(EVTYPE = ifelse(grepl("winter", EVTYPE,
ignore.case=T), "Winter Weather", EVTYPE))
然而,在奇怪的行爲knitr結果完全相同的一行代碼。如果grep失敗,而不是將EVTYPE的值保留在一個單獨的值中,它將改爲一個數字。也許是一個索引。
在頭部的R(唯一的(損壞$ EVTYPE))輸出:
[1] 「龍捲風」 「TSTM風」 「冰雹」 「ICE STORM/FLASH FLOOD」
[5 ] 「冬天氣」 「颶風OPAL /大風」
而在knitr它是:
[1] 「407」 「423」 「134」 「239」
[5]「冬季天氣」「223」
這是一個錯誤?有沒有理由不期望在knitr中工作?
它看起來像你的R環境中它是一個字符矢量,而在你的knitr環境中它是一個因素。你忘記在read.table或'data.frame'上使用'stringsAsFactors = FALSE'嗎? –
就是這樣!非常感謝你。把它作爲答案,我會選擇它。 –
如果這是原始上下文中的整行代碼(我理解它可能會從其原始上下文中修改),爲什麼還要使用'%>%'? '損傷< - 變異(傷害,...)'和'傷害<- damage %>%mutate(...)'相同並且更短... –