Ошибка с заменой в R data.frame на stringsAsFactors = TRUE? - PullRequest
0 голосов
/ 18 сентября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...