我想将数据框转换为R中的矩阵。该数据框具有30多个不同的变量,具有不同的类型,其中一些是数字变量,一些因素和某些字符。将其转换为矩阵时,我希望所有类型都与数据框中的类型完全相同。
我尝试使用as.matrix()对其进行转换,请参见下面的代码(这只是一个只有两个变量的简单示例数据框)。
test_df <- data.frame(a = c(1:10), b = c(letters[1:10]))
test_df <- as.matrix(test_df)
typeof(test_df[,1])
typeof(test_df[,2])
示例中的列“ a”具有整数类型,而列“ b”具有类型因子。我希望将数据帧转换为矩阵时,每一列都保持其类型。但是,当我将其转换为矩阵时,所有变量都将转换为类型字符。
答案 0 :(得分:3)
不,您不能那样做。在R中,矩阵必须全部为一种类型:它作为该类型的向量与一个属性一起存储,该属性说明该矩阵有多少行和多少列。
为了提高效率,您说对了,矩阵比数据帧快很多。也许您可以将数据框分成一个数字一和一个字符一。大多数其他类型都可以强制转换为这些类型,而不会造成太多损失。