如何将数据转换为矩阵格式

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

8
您的问题可能会被迁移到StackOverflow。然而,答案相对简单,我将提供它。read.csv生成一个数据框作为结果。如果您所有的值都是相同的基本元素类型,即数字、字符等,则可以使用矩阵数据结构来表示它们。您可以使用"as.matrix"函数来实现这一点。
例如:
mydataframe <- data.frame(a=c(1,2),b=c(2,3))    
mymatrix <- as.matrix(mydataframe)

6
如果使用read.csv读取的数据实际上与matrix一致,那么首先可以使用scan,可能需要使用skip=1来跳过一个标题行。
m = matrix(scan("file.csv", what=numeric(), skip=1), nrow=392)

相对于具有简单结构的数据而言,扫描速度比read.csv快得令人不安。


5
< p > < code > as.matrix() 的替代方案是 < code > 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()则通过用内部数字代码替换因子标签来保留数据的数值属性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接