Я изучаю R, и у меня проблемы с пониманием того, как работает stringsAsFactors при создании data.frame.Давайте посмотрим на этот пример 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", и поэтому я не знаю, как избежать повторения этой же ошибки в следующий раз.