Изменить параметры strAsAsFactors для data.frame

У меня есть функция, в которой я определяю data.frame, что я использую циклы для заполнения данными. В какой-то момент я получаю сообщение "Предупреждение":

Предупреждающие сообщения: 1: В [<-.factor (*tmp*, iseq, value = "CHANGE" ): недопустимый уровень фактора, генерируемые НС

Поэтому, когда я определяю свой файл data.frame, я хотел бы установить опцию stringsAsFactors на FALSE, но я не понимаю, как это сделать.

Я пробовал:

DataFrame = data.frame(stringsAsFactors=FALSE)

а также:

options(stringsAsFactors=FALSE)

Каков правильный способ установки опции stringsAsFactors?

Ответы

Ответ 1

Это зависит от того, как вы заполняете свой фрейм данных, для которого вы не указали никакого кода. Когда вы создаете новый фрейм данных, вы можете сделать это так:

x <- data.frame(aName = aVector, bName = bVector, stringsAsFactors = FALSE)

В этом случае, если, например, aVector является символьным вектором, тогда столбец данных x$aName также будет символьным вектором, а не фактором. Сочетание этого с существующим фреймом данных (с использованием rbind, cbind или аналогичного) должно сохранить этот режим.

При выполнении

options(stringsAsFactors = FALSE)

вы измените глобальную настройку по умолчанию. Поэтому каждый кадр данных, который вы создаете после выполнения этой строки, не будет автоматически преобразовываться в факторы, если это явно не указано. Если вам нужно избегать конверсии только в одном месте, я бы предпочел не изменять значение по умолчанию. Однако, если это влияет на многие места вашего кода, изменение значения по умолчанию кажется хорошей идеей.

Еще одна вещь: если ваш вектор уже является фактором, то ни одно из вышеизложенного не изменит его на символ символа. Для этого вы должны явно преобразовать его с помощью as.character или аналогичного.