用stringAssFactors = TRUE替换R data.frame中的错误?

时间:2018-09-18 18:42:26

标签: r dataframe

我正在学习R,并且在创建data.frame时理解“ stringsAsFactors”如何工作时遇到问题。让我们看一下这个data.frame示例,它包含一年中的月份以及相关的“温度”:

> temp <- c(1:6,6:1)    
> goodData <- data.frame(month.abb,temp,stringsAsFactors = FALSE)
> goodData$month.abb <- ifelse(temp < 4,"cold",goodData$month.abb)
> goodData
   month.abb temp
1       cold    1
2       cold    2
3       cold    3
4        Apr    4
5        May    5
6        Jun    6
7        Jul    6
8        Aug    5
9        Sep    4
10      cold    3
11      cold    2
12      cold    1

如预期的那样。但是使用默认的“ stringsAsFactors = TRUE”,我没有得到任何明确的错误,但在检查时却得到了错误的结果:

> badData <- data.frame(month.abb,temp,stringsAsFactors = TRUE)
> badData$month.abb <- ifelse(temp < 4,"cold",badData$month.abb)
> badData
   month.abb temp
1       cold    1
2       cold    2
3       cold    3
4          1    4
5          9    5
6          7    6
7          6    6
8          2    5
9         12    4
10      cold    3
11      cold    2
12      cold    1

任何人都可以解释为什么会发生此错误(即R在上面的命令中到底在做什么)? 我看不到这些值“ 1,9,7,6,2,12”来自何处,因此我不知道下次如何避免犯同样的错误。

0 个答案:

没有答案