将具有因子的数据框更改为大矩阵 R

Change data frame with factors to a big matrix R

我有一个大数据框(22k 行,400 列),它是使用来自 csv 文件的 read.csv 生成的。似乎每一列都是一个因素,所有行值都是这个因素的水平。

我现在想做一些分析(如 PCA),但除非它是矩阵,否则我无法使用它,但即使我像矩阵一样尝试它,我得到的也只是

> prcomp(as.matrix(my_data))
Error in colMeans(x, na.rm = TRUE) : 'x' must be numeric

有没有办法将这个带有因子的数据框转换为一个简单的大矩阵?

我是 R 的新手,所以请原谅所有(可能是可怕的)错误。

谢谢

你可以这样做:

df<-data.frame(a=as.factor(c(1,2,3)), b=as.factor(c(2,3,4)))
m<-apply(apply(df, 1, as.character), 1, as.numeric)

apply 在给定的 data.frame 上使用方法。重要的是不要忘记先将其转换为字符,否则它将转换为因子的内部数字表示。

要添加列名,请执行以下操作:

m<-m[-1,] # removes the first 'empty' row
colnames(m)<-c("a", "b") # replace the right hand side with your desired column names, e.g. the first row of your data.frame

再给个小费。您可能从文件中读取了 data.frame,当您设置参数 header=TRUE 时,第一行不会是 header,而是 data.frame 的列名正确。