我已经通过read.csv将原始数据(10000行和392列)导入到R中。我想知道如何将其转换为Matrix格式。非常感谢你的帮助!
答案 0 :(得分:8)
您的问题可能会迁移到StackOverflow。但是,答案相对简单,我会提供。 read.csv生成一个data.frame作为结果。如果所有值都是相同的基本元素(即变量)类型,即数字,字符等,那么您可以在Matrix数据结构中表示它们。您可以使用“as.matrix”功能完成此操作。
e.g。
mydataframe <- data.frame(a=c(1,2),b=c(2,3))
mymatrix <- as.matrix(mydataframe)
答案 1 :(得分:6)
如果数据由read.csv
读取但实际上与matrix
一致,则首先使用scan
,可能使用skip=1
跳过标题行。
m = matrix(scan("file.csv", what=numeric(), skip=1), nrow=392)
与read.csv相比,对于结构简单的数据,扫描速度令人不安。
答案 2 :(得分:5)
as.matrix()
的替代方法是data.matrix()
,它有利于在转换为矩阵时保留因子变量的数字(编码)信息。考虑:
d <- data.frame(1:10, letters[1:10])
as.matrix(d)
data.matrix(d)
> as.matrix(d)
X1.10 letters.1.10.
[1,] " 1" "a"
[2,] " 2" "b"
[3,] " 3" "c"
[4,] " 4" "d"
[5,] " 5" "e"
[6,] " 6" "f"
[7,] " 7" "g"
[8,] " 8" "h"
[9,] " 9" "i"
[10,] "10" "j"
> data.matrix(d)
X1.10 letters.1.10.
[1,] 1 1
[2,] 2 2
[3,] 3 3
[4,] 4 4
[5,] 5 5
[6,] 6 6
[7,] 7 7
[8,] 8 8
[9,] 9 9
[10,] 10 10
注意带有文本标签的因子的存在如何将as.matrix()
的整个矩阵呈现为字符矩阵,而data.matrix()
通过用其内部数字替换因子标签来保留数据的数字性质代码。