为什么使用cbind创建新数据框会自动将数字列转换为因子?

时间:2016-02-17 22:00:15

标签: r dataframe

我有SectionsPagerAdapter

L

Var1 Freq 2 1103 6 6 1107 10 10 1112 7 21 1125 6 24 1129 10 31 1137 5

pct

head(pct) [1] 0.806 0.706 0.781 0.800 0.655 0.844 最初是数字,而不是因素:

pct

但是,我将str(pct) num [1:68] 0.806 0.706 0.781 0.8 0.655 0.844 L

组合在一起
pct

我发现此新数据框pct_by <- as.data.frame(cbind(as.vector(L$Var1), pct)) 包含pct_by因素,如下所示:

pct

这是为什么?如何更改str(pct_by 'data.frame': 68 obs. of 2 variables: $ V1: Factor w/ 68 levels "1103","1107",..: 1 2 3 4 5 6 7 8 9 10 ... $ pct: Factor w/ 41 levels "0.375","0.529",..: 34 19 29 33 10 37 27 9 12 11 ... ,使其成为最初的数字,而不是因子?

1 个答案:

答案 0 :(得分:5)

根本不使用cbind。这是一个坏习惯,人们似乎从旧的教程或其他东西。只需使用:

pct_by <- data.frame(L$Var1, pct)

问题是cbind更愿意返回矩阵,而矩阵只能容纳一种数据类型。如果其中一个变量是一个字符串,它们将全部转换为字符串,然后在放入data.frame时转换为因子。