非数字矩阵

时间:2016-11-21 15:44:26

标签: r bar-chart

我的矩阵有问题。 第一行和第一列不是数字。因此,每当我尝试用R中的矩阵做某事时,x必须是数字。

矩阵图片: Count matrix

矩阵有43列和1,000,000行。

任何人都可以帮我定义矩阵吗?我不想丢失我在非数字行/列中的信息。

我在这个页面上看到过如何做的其他例子,但它是小型矩阵,他们手动定义它,因为我的矩阵很大,我不可能

1 个答案:

答案 0 :(得分:1)

您可以使用行名称和列名来容纳非数字数据,同时将矩阵的其余部分转换为数字类型。像这样举例如:

创建一个虚拟矩阵来演示:

m0 = matrix(sample(0:9, 36,T), ncol = 6)
m0[, 1] = c("",letters[1:5])
m0[1, ] = c("",letters[1:5])

#     [,1] [,2] [,3] [,4] [,5] [,6]
#[1,] ""   "a"  "b"  "c"  "d"  "e" 
#[2,] "a"  "5"  "6"  "2"  "0"  "7" 
#[3,] "b"  "9"  "0"  "5"  "6"  "3" 
#[4,] "c"  "9"  "7"  "6"  "6"  "0" 
#[5,] "d"  "5"  "5"  "7"  "8"  "3" 
#[6,] "e"  "4"  "0"  "9"  "4"  "4"

现在创建一个新的矩阵,其主体中包含数值,以及用于容纳字符串的行/列名称

m1 = (m0[-1,-1])        # extract just the numeric part of the matrix into a new matrix
mode(m1) = "numeric"    # cast this into numeric rather than character type
colnames(m1) = m0[1,-1] # use the first row of original as column names
rownames(m1) = m0[-1,1] # same for row names

#   a b c d e
# a 5 6 2 0 7
# b 9 0 5 6 3
# c 9 7 6 6 0
# d 5 5 7 8 3
# e 4 0 9 4 4