6

我已通过 read.csv 将原始数据(10000 行和 392 列)导入 R。我想知道如何将其转换为矩阵格式。非常感谢您的帮助!

4

3 回答 3

8

您的问题可能会迁移到 StackOverflow。但是,答案相对简单,我会提供。read.csv 会生成一个 data.frame 作为结果。如果您的所有值都是相同的基本元素(即变量)类型,即数字、字符等。那么您可以在矩阵数据结构中表示它们。您可以使用“as.matrix”函数来做到这一点。

例如

mydataframe <- data.frame(a=c(1,2),b=c(2,3))    
mymatrix <- as.matrix(mydataframe)
于 2013-01-29T21:22:04.700 回答
6

如果数据由 读取read.csv但实际上与 一致matrix,则scan首先使用,可能skip=1用于跳过标题行。

m = matrix(scan("file.csv", what=numeric(), skip=1), nrow=392)

对于结构简单的数据,scan 比 read.csv 快得令人不安。

于 2013-01-30T01:01:45.237 回答
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()通过将因子标签替换为其内部数字代码来保留数据的数字性质。

于 2013-01-29T22:19:47.433 回答