R语言 通过列名和行名从矩阵中提取数值
在这篇文章中,我们将讨论如何在R编程语言中通过列名和行名从矩阵中提取数值。
通过列名从矩阵中提取数值
通过对所选行名的过滤,可以从原始矩阵中提取出一个行子集矩阵。由于矩阵的元素是以双索引格式访问的,因此可以进行特定的行选择。
语法 :
matrix[ vec , ]
其中,vec包含要获取的行名。
所有的列都是从数据框架中获取的。行和列的顺序不做修改。行和列的名称在提取后保持不变。返回的结果是原始矩阵的一个子集。行名应该是与矩阵相关的原始行名的适当子集。
例子
# declaring matrix
mat <- matrix(letters[1:12], ncol = 3)
# naming columns
colnames(mat) <- c("C1","C2","C3")
# naming rows
rownames(mat) <- c("R1","R2","R3","R4")
print ("Original Matrix")
print (mat)
# extracting rows
row_vec <- c("R2","R4")
row_mat <- mat[row_vec ,]
print ("Modified Matrix")
print (row_mat)
输出
[1] "Original Matrix"
C1 C2 C3
R1 "a" "e" "i"
R2 "b" "f" "j"
R3 "c" "g" "k"
R4 "d" "h" "l"
[1] "Modified Matrix"
C1 C2 C3
R2 "b" "f" "j"
R4 "d" "h" "l"
通过行名从矩阵中提取数值
通过对所选列名的过滤,可以从原始矩阵中提取出一个列子集矩阵。由于矩阵的元素是以双索引格式访问的,因此可以进行特定的行选择。
语法
matrix[, vec ]
其中,vec包含要获取的列名
所选列的所有行都会从数据框中检索出来。行和列的顺序保持不变。提取后的行和列名保持不变。返回的结果是原始矩阵的一个子集。要选择的列名应该是与矩阵有关的原始行名的适当子集。
例子
# declaring matrix
mat <- matrix(letters[1:12], ncol = 3)
# naming columns
colnames(mat) <- c("C1","C2","C3")
# naming rows
rownames(mat) <- c("R1","R2","R3","R4")
print ("Original Matrix")
print (mat)
# extracting rows
col_vec <- c("C1","C3")
col_mat <- mat[,col_vec]
print ("Modified Matrix")
print (col_mat)
输出
[1] "Original Matrix"
C1 C2 C3
R1 "a" "e" "i"
R2 "b" "f" "j"
R3 "c" "g" "k"
R4 "d" "h" "l"
[1] "Modified Matrix"
C1 C3
R1 "a" "i"
R2 "b" "j"
R3 "c" "k"
R4 "d" "l"
使用列名和行名提取数值
与上述方法类似,也可以通过为两个索引指定所选择的向量来提取行和列。
语法
matrix[ rowvec , colvec ]
其中,rowvec包含要提取的行名,colvec包含列名。
例子
# declaring matrix
mat <- matrix(letters[1:12], ncol = 3)
# naming columns
colnames(mat) <- c("C1","C2","C3")
# naming rows
rownames(mat) <- c("R1","R2","R3","R4")
print ("Original Matrix")
print (mat)
# extracting rows
row_vec <- c("R1","R3")
# extracting columns
col_vec <- c("C1","C3")
col_mat <- mat[row_vec ,col_vec]
print ("Modified Matrix")
print (col_mat)
输出
[1] "Original Matrix"
C1 C2 C3
R1 "a" "e" "i"
R2 "b" "f" "j"
R3 "c" "g" "k"
R4 "d" "h" "l"
[1] "Modified Matrix"
C1 C3
R1 "a" "i"
R3 "c" "k"
任何单一元素或单元格的值也可以从矩阵中获取,只需指定行名和列名作为检索的索引。
例子
# declaring matrix
mat <- matrix(letters[1:12], ncol = 3)
# naming columns
colnames(mat) <- c("C1","C2","C3")
# naming rows
rownames(mat) <- c("R1","R2","R3","R4")
print ("Original Matrix")
print (mat)
# extracting single element
col_mat <- mat["R3" , "C2"]
print ("Modified Matrix")
print (col_mat)
输出
[1] "Original Matrix"
C1 C2 C3
R1 "a" "e" "i"
R2 "b" "f" "j"
R3 "c" "g" "k"
R4 "d" "h" "l"
[1] "Modified Matrix"
[1] "k"