非数字矩阵

问题描述:

我的矩阵有问题。 第一行和第一列不是数字。我therfore得到“X必须是数字每次我尝试做的矩阵东西R.矩阵的非数字矩阵

图片: Count matrix

矩阵有43列1,000,000线

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

我已经在此页面上看到了有关如何操作的其他示例,但它一直是小矩阵他们已经手动定义了它,因为我的矩阵很大,所以它不是一个可能y对我来说

+1

嗨,欢迎来到堆栈溢出!当你问一个相关的问题时,你如何问它可以帮助我们为你提供一个答案。请看[问]来帮助你提问。 –

+0

欢迎来到SO。在提供[最小,完整和可验证的示例](http://*.com/help/mcve)时,我想添加帮助以获得良好和快速的支持。 – gus27

+0

嘿,谢谢。我试图指定:) – Camilla

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

创建一个虚拟矩阵证明:

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