我有一个大数据框(22k行,400列),它是使用csv文件中的read.csv生成的。似乎每列都是一个因子,所有行值都是该因子的水平。
我现在想做一些分析(比如PCA),但我不能使用它,除非它是一个矩阵,但即使我像矩阵一样尝试它,我得到的只是
> prcomp(as.matrix(my_data))
Error in colMeans(x, na.rm = TRUE) : 'x' must be numeric
有没有办法将这个数据框的因子转换为简单的大矩阵?
我是R的新人,所以原谅所有(可能是可怕的)错误。
由于
答案 0 :(得分:0)
你可以这样做:
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时,第一行将不是标题,但data.frame的列名将是正确的。