我正在学习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”来自何处,因此我不知道下次如何避免犯同样的错误。