Мы можем создать data.frame
как
df <- data.frame(x, y, c, stringsAsFactors = FALSE)
. Таким образом, вывод selected_df
равен
selected_df
# x y c
#1 1 7 red
ПРИМЕЧАНИЕ: stringsasfactors
не равно до stringsAsFactors
. Таким образом, столбцы character
остаются как factor
class
str(as.data.frame(cbind(x,y,c),stringsasfactors=FALSE) )
# 'data.frame': 3 obs. of 3 variables:
#$ x: Factor w/ 3 levels "1","2","5": 1 2 3
#$ y: Factor w/ 3 levels "2.2","7","8": 2 1 3
#$ c: Factor w/ 3 levels "blue","red","yellow": 2 3 1
Кроме того, as.data.frame(cbind
будет иметь ненужные проблемы, так как cbind
возвращает matrix
, а matrix
может иметь только один class
т.е. все столбцы конвертируются в класс character
, поскольку значения в c равны character
. Когда мы используем as.data.frame
с stringsAsFactors = FALSE
, это создает класс character
, но столбцы numeric
должны оставаться нумерацией c