Ответ 1
Это зависит от того, как вы заполняете свой фрейм данных, для которого вы не указали никакого кода. Когда вы создаете новый фрейм данных, вы можете сделать это так:
x <- data.frame(aName = aVector, bName = bVector, stringsAsFactors = FALSE)
В этом случае, если, например, aVector
является символьным вектором, тогда столбец данных x$aName
также будет символьным вектором, а не фактором. Сочетание этого с существующим фреймом данных (с использованием rbind
, cbind
или аналогичного) должно сохранить этот режим.
При выполнении
options(stringsAsFactors = FALSE)
вы измените глобальную настройку по умолчанию. Поэтому каждый кадр данных, который вы создаете после выполнения этой строки, не будет автоматически преобразовываться в факторы, если это явно не указано. Если вам нужно избегать конверсии только в одном месте, я бы предпочел не изменять значение по умолчанию. Однако, если это влияет на многие места вашего кода, изменение значения по умолчанию кажется хорошей идеей.
Еще одна вещь: если ваш вектор уже является фактором, то ни одно из вышеизложенного не изменит его на символ символа. Для этого вы должны явно преобразовать его с помощью as.character
или аналогичного.