找回密码
 立即注册
查看: 3751|回复: 2

矩阵第1列类型转换,结果整个矩阵变成了1列

[复制链接]
发表于 2016-12-4 16:43:25 | 显示全部楼层 |阅读模式

将数据框转换成矩阵(2列),再将矩阵第1列从字符型转换成数值型,结果整个矩阵变成了1列

> mouse<-data.frame(
+ x=c(164,190,203,205,206,214,228,257,185,197),
+ a=factor(c(rep(1,3),rep(2,2),rep(3,3),rep(4,2)))
+

> mouse
得到如下数据框:
     x a
1  164 1
2  190 1
3  203 1
4  205 2
5  206 2
6  214 3
7  228 3
8  257 3
9  185 4
10 197 4

将数据框转换成矩阵:
> mouse.matrix<-as.matrix(mouse)
> mouse.matrix
      x     a  
[1,] "164" "1"
[2,] "190" "1"
[3,] "203" "1"
[4,] "205" "2"
[5,] "206" "2"
[6,] "214" "3"
[7,] "228" "3"
[8,] "257" "3"
[9,] "185" "4"
[10,] "197" "4"

x列变成了字符,想把x列转换成数值:
> mouse.matrix[,1]<-lapply(mouse.matrix[,1],as.numeric)
> str(mouse.matrix)
List of 20
$ : num 164
$ : num 190
$ : num 203
$ : num 205
$ : num 206
$ : num 214
$ : num 228
$ : num 257
$ : num 185
$ : num 197
$ : chr "1"
$ : chr "1"
$ : chr "1"
$ : chr "2"
$ : chr "2"
$ : chr "3"
$ : chr "3"
$ : chr "3"
$ : chr "4"
$ : chr "4"

第一列是转换成了数值,查看矩阵。
> mouse.matrix

[[1]]
[1] 164


[[2]]
[1] 190


[[3]]
[1] 203


[[4]]
[1] 205


[[5]]
[1] 206


[[6]]
[1] 214


[[7]]
[1] 228


[[8]]
[1] 257


[[9]]
[1] 185


[[10]]
[1] 197


[[11]]
[1] "1"


[[12]]
[1] "1"


[[13]]
[1] "1"


[[14]]
[1] "2"


[[15]]
[1] "2"


[[16]]
[1] "3"


[[17]]
[1] "3"


[[18]]
[1] "3"


[[19]]
[1] "4"


[[20]]
[1] "4"

矩阵变成了一列,不再是2列。。。


有什么办法能转换列的类型,但保持矩阵结构(列数)不变吗?




回复

使用道具 举报

发表于 2016-12-6 17:04:07 | 显示全部楼层
矩阵的每个元素的类型必须一致吧,不可能一列是数值,一列是字符
回复

使用道具 举报

 楼主| 发表于 2016-12-6 23:02:25 | 显示全部楼层
heshuiduoge 发表于 2016-12-6 17:04
矩阵的每个元素的类型必须一致吧,不可能一列是数值,一列是字符

是您说的这样的,谢谢!


刚试了如果用mouse.matrix[,1:2]<-lapply(mouse.matrix[,1:2],as.numeric)想将整个矩阵一起转换成数值型,也没有实现想要的效果。


找到了如果用mouse1<-matrix(as.numeric(mouse),nrow=nrow(mouse)),mouse1就成了想要的矩阵。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|R语言中文网

GMT+8, 2024-11-23 01:14 , Processed in 0.022715 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表