R语言将字符串矩阵转化为数值型矩阵
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言将字符串矩阵转化为数值型矩阵相关的知识,希望对你有一定的参考价值。
参考技术A 这是原始数据的格式,当运行完下面的命令的时候,结果如下图x=read.table("C:/Users/Administrator/Desktop/s1.txt")
x=as.matrix(x)
x
显然x是个字符串矩阵,如果我要删去x的第一列,
y=x[,-1]
y
结果如图
显然,y还是一个字符串矩阵,,如何将字符串矩阵转化为数值矩阵呢?使用apply()函数
y=apply(y,2,as.numeric)
apply()函数里面的第2个值,如果为1,则修改的为行,如果取2则表示修改的为列
R语言实战-数据类型-1(标量向量矩阵数组)
0、基本数据类型
数值型num,包含整形、浮点型、双精度型等所有数值类型
字符型factor,字符和字符串,因子
布尔值logi,布尔型,T,TRUE,F,FALSE
1、标量
单个的数值、字符值或者布尔值
2、向量
函数c()
1 a<-c(1,2,3,4) 2 b<-c(‘aa‘,‘bb‘,‘cc‘) 3 c<-c(TRUE,FALSE,TRUE)
访问向量的元素
[]中括号中指定元素的下标
可以是单个数值,也可以是数值向量,还可以用x:y的形式指定一个范围
1 > d<-a[c(1,3)] 2 > d 3 [1] 1 3 4 > e<-a[2:4] 5 > e 6 [1] 2 3 4 7 > f<-a[3] 8 > f 9 [1] 3
3、矩阵
Usage
matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)
1 matrix(1:21,nrow = 5) 2 [,1] [,2] [,3] [,4] [,5] 3 [1,] 1 6 11 16 21 4 [2,] 2 7 12 17 1 5 [3,] 3 8 13 18 2 6 [4,] 4 9 14 19 3 7 [5,] 5 10 15 20 4 8 Warning message: 9 In matrix(1:21, nrow = 5) : 10 data length [21] is not a sub-multiple or multiple of the number of rows [5] 11 >
如上所述,矩阵创建自向量,可以通过指定行数来分配元素,默认是以列优先排列,可以通过指定byrow参数来改变元素排列方式
1 matrix(1:21,nrow = 5,byrow = TRUE) 2 [,1] [,2] [,3] [,4] [,5] 3 [1,] 1 2 3 4 5 4 [2,] 6 7 8 9 10 5 [3,] 11 12 13 14 15 6 [4,] 16 17 18 19 20 7 [5,] 21 1 2 3 4 8 Warning message: 9 In matrix(1:21, nrow = 5, byrow = TRUE) : 10 data length [21] is not a sub-multiple or multiple of the number of rows [5]
矩阵元素的访问
1 > x[2,] 2 [1] 6 7 8 9 10 3 > x[,2] 4 [1] 2 7 12 17 22 5 > x[2,2] 6 [1] 7 7 > x[3,3] 8 [1] 13 9 > x[c(1,3),] 10 [,1] [,2] [,3] [,4] [,5] 11 [1,] 1 2 3 4 5 12 [2,] 11 12 13 14 15 13 > x[c(1,3),c(2,4)] 14 [,1] [,2] 15 [1,] 2 4 16 [2,] 12 14 17 > x[1:3,] 18 [,1] [,2] [,3] [,4] [,5] 19 [1,] 1 2 3 4 5 20 [2,] 6 7 8 9 10 21 [3,] 11 12 13 14 15
4、数组
Usage
array(data = NA, dim = length(data), dimnames = NULL)
1 > y<-array(1:100,dim = c(2,2,5,5), 2 + dimnames = list( 3 + c(‘a1‘,‘a2‘), 4 + c(‘b1‘,‘b2‘), 5 + c(‘c1‘,‘c2‘,‘c3‘,‘c4‘,‘c5‘), 6 + c(‘d1‘,‘d2‘,‘d3‘,‘d4‘,‘d5‘))) 7 > y 8 , , c1, d1 9 10 b1 b2 11 a1 1 3 12 a2 2 4 13 14 , , c2, d1 15 16 b1 b2 17 a1 5 7 18 a2 6 8 19 20 , , c3, d1 21 22 b1 b2 23 a1 9 11 24 a2 10 12 25 26 , , c4, d1 27 28 b1 b2 29 a1 13 15 30 a2 14 16 31 32 , , c5, d1 33 34 b1 b2 35 a1 17 19 36 a2 18 20 37 38 , , c1, d2 39 40 b1 b2 41 a1 21 23 42 a2 22 24 43 44 , , c2, d2 45 46 b1 b2 47 a1 25 27 48 a2 26 28 49 50 , , c3, d2 51 52 b1 b2 53 a1 29 31 54 a2 30 32 55 56 , , c4, d2 57 58 b1 b2 59 a1 33 35 60 a2 34 36 61 62 , , c5, d2 63 64 b1 b2 65 a1 37 39 66 a2 38 40 67 68 , , c1, d3 69 70 b1 b2 71 a1 41 43 72 a2 42 44 73 74 , , c2, d3 75 76 b1 b2 77 a1 45 47 78 a2 46 48 79 80 , , c3, d3 81 82 b1 b2 83 a1 49 51 84 a2 50 52 85 86 , , c4, d3 87 88 b1 b2 89 a1 53 55 90 a2 54 56 91 92 , , c5, d3 93 94 b1 b2 95 a1 57 59 96 a2 58 60 97 98 , , c1, d4 99 100 b1 b2 101 a1 61 63 102 a2 62 64 103 104 , , c2, d4 105 106 b1 b2 107 a1 65 67 108 a2 66 68 109 110 , , c3, d4 111 112 b1 b2 113 a1 69 71 114 a2 70 72 115 116 , , c4, d4 117 118 b1 b2 119 a1 73 75 120 a2 74 76 121 122 , , c5, d4 123 124 b1 b2 125 a1 77 79 126 a2 78 80 127 128 , , c1, d5 129 130 b1 b2 131 a1 81 83 132 a2 82 84 133 134 , , c2, d5 135 136 b1 b2 137 a1 85 87 138 a2 86 88 139 140 , , c3, d5 141 142 b1 b2 143 a1 89 91 144 a2 90 92 145 146 , , c4, d5 147 148 b1 b2 149 a1 93 95 150 a2 94 96 151 152 , , c5, d5 153 154 b1 b2 155 a1 97 99 156 a2 98 100
数组array元素访问
1 > y[1,2,3,4] 2 [1] 71 3 > y[1,2,1:2,2:3] 4 d2 d3 5 c1 23 43 6 c2 27 47 7 > y[1,c(1,2),2:4,c(1,3,5)] 8 , , d1 9 10 c2 c3 c4 11 b1 5 9 13 12 b2 7 11 15 13 14 , , d3 15 16 c2 c3 c4 17 b1 45 49 53 18 b2 47 51 55 19 20 , , d5 21 22 c2 c3 c4 23 b1 85 89 93 24 b2 87 91 95
PS:统一的下标定义方式,减少学习成本,赞一个!
再尝试使用列明访问
1 > y[c(‘a2‘),‘b2‘,‘c2‘,‘d2‘] 2 [1] 28 3 > y[c(‘a2‘),‘b2‘,‘c2‘,c(‘d2‘,‘d3‘)] 4 d2 d3 5 28 48
PS:需要注意的是数组array定义时不支持按行填充!!
PS:以上所提及的标量、向量、矩阵、数组都仅仅支持相同的数据类型
以上是关于R语言将字符串矩阵转化为数值型矩阵的主要内容,如果未能解决你的问题,请参考以下文章