当前位置:首页 » 网络资讯 » r怎样把矩阵转成数据
扩展阅读
红羊真军系列有哪些 2024-05-03 20:24:26
转机助手可以转移app吗 2024-05-03 20:12:57
vip网址 2024-05-03 20:08:20

r怎样把矩阵转成数据

发布时间: 2023-03-31 12:31:31

1. 求助:R语言 有个字符型矩阵,怎么样转换成数值型的矩阵

可蚂册以用as.numeric的
假设闷差宏你庆闹的矩阵是a
b=matrix(as.numeric(a),nrow=nrow(a))
这样就行了

2. R语言-数组到矩阵的转换

R语言-数组到矩阵的转换
1、问题:
有一个很大的三维数组,需要转换为一个矩阵,是否能在R中用循环语句或者其他方式实现?

三维数组(3, 2, 3)类似下面形式:
, , 1

[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6

, , 2

[,1] [,2]
[1,] 7 10
[2,] 8 11
[3,] 9 12

, , 3

[,1] [,2]
[1,] 13 16
[2,] 14 17
[3,] 15 18

希望转换后的矩阵(6, 3)如下:
1 7 13
4 10 16
2 8 14
5 11 17
3 9 15
6 12 18
2、解答:
基于问题数据的特点,可直毁明接用行组合就可以,避免使用循环计算,在进行大数据处理时可显着提高处理效率。
可以看到最终数据呈横向扩展,而与第3维数据的个数无关。
1、假定有数据:
> a <- array(1:18, dim=c(3,2,3))
> a
, , 1

[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6

, , 2

[,1] [,2]
[1,] 7 10
[2,] 8 11
[3,] 9 12

, , 3

[,1] [,2]
[1,] 13 16
[2,] 14 17
[3,] 15 18
2、合成宽册后的矩阵为:
>b<- rbind(a[1,,],a[2,,],a[3,,])
一句话搞定。
3、查看结果
> b
[,1] [,2] [,3]
[1,] 1 7 13
[2,] 4 10 16
[3,] 2 8 14
[4,] 5 11 17
[5,] 3 9 15
[6,] 6 12 18
4、使用更多数据测试:
> a <- array(1:24, dim=c(3,2,4))
> a
, , 1

[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6

, , 2

[,1] [,2]
[1,] 7 10
[2,] 8 11
[3,] 9 12

, , 3

[,1] [,2]
[1,] 13 16
[2,] 14 17
[3,] 15 18

, , 4

[,1] [,2]
[1,] 19 22
[2,] 20 23
[3,] 21 24

> b<-rbind(a[1,,],a[2,,],a[3,,])
> b
[,1] [,2] [,3] [,4]
[1,] 1 7 13 19
[2,] 4 10 16 22
[3,] 2 8 14 20
[4,] 5 11 17 23
[5,] 3 9 15 21
[6,] 6 12 18 24
3、另外的方法
1、apply()
apply(x, 3, t)
apply()函数,可将一个慎余宏任意函数“应用”到矩阵、数组、数据框的任何维度上。apply函数的使用格式为:
apply(x, MARGIN, FUN, ...)
其中,x为数据对象,MARGIN是维度的下标,FUN是由你指定的函数,而...则包括了任何想传递给FUN的参数。在矩阵或数据框中,MARGIN=1表示行,MARGIN=2表示列。
2、aperm()
(1)aperm() 函数,Transpose an array by permuting its dimensions and optionally resizingit.
Transpose变换顺序
permute 序列改变,重新排列一个数组
该函数意即改变数组的维度顺序,维度1,2,3按不同顺序进行变换。
(2)array()函数,用法array(data = NA, dim = length(data), dimnames = NULL)
array(aperm(x, c(2,1,3)), c(6,3))
将数组x维度改变(1->2,2->1,3->3)后:
aperm(x, c(2,1,3))
再变换成新的数组:
array(aperm(x, c(2,1,3)), c(6,3))
注意:
其实这样做有点多余,可直接应用数组变换:
array(x, c(6,3))
结果与上述方法结果一样。
如果是三维数量是4,则公式为:
array(x,c(6,4))
依此类推。

3. R语言,怎么样把下面矩阵第一列的行名变成数据,上空格处加个列名“ID”

假如已经将上面的数据读入了R中的清橘data.frame中,并保存为df变量
library(stringr)
df$ID <答蚂团物早- row.names(df)
df$ID <- str_extract(df$ID, '\\d+')##提取数字

4. 如何将r语言中矩阵转成c 中数组

首先,transf 这函数不能实现转置功能 a[i][j]和a[j][i]对换,锋肢袭按照循环,后面这两个数还会再对换一次,等于没换 另饥晌外 printf("The new Matrix is:\n"银兄); for(i=0;i

5. 说说R语言的转置

在群里看到了一个问题,他用R语言的转置函数 t() 对下面形式的数据进行了转数槐置

转置之后的数据结构如下

他发现转置之后搜虚多了一行,也就是有了geneid这一行,和他预期的不符合。按照预期,geneid这一行应该是成为列名,而不是作为输出的第一行。那么,为什么会出现这个情况呢世毕燃?这就需要从 t() 这个函数说起。

使用 ?t ,你会得到关于这个函数的函数说明。在函数的Detials部分中,有这样一段

即,数据框会先用 as.matrix() 转成矩阵格式,然后再引用 t() ,最终你对一个数据框使用 t() 函数时,你会得到一个矩阵,而非原先的data.frame.

举个例子:

因为矩阵要求存放的内容是同一种数据类型,对于输入的数据框而言,一般都会有字符串,数值这些,那么最终都会被转成字符串。

对于最开始的问题而言,因为原先的数据框的第一列是字符串,那么自然而然会把所有的数据都变成字符串,然后把第一列变成第一行。而如果要实现他真正的目的,需要先将第第一行变成行名,然后删掉第一行在转置,也就是

其结果就是先保证原来的数据框里面都是数值数据,而不是让第一列充当行名。

延伸一下,对于超过2维的数组,我们要用到 aperm 函数才能对数据进行转置。当然,超过二维的转置,你甚至都无法直观感受到这是一个什么过程。

6. R语言将字符串矩阵转化为数值型矩阵

这是原始数据的格式,当运行完下面的命令的时候,结岁脊果如下图

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则表伍世示修改的为列

7. r语言矩阵转为图表

r语言矩迹漏阵转为图基闷表以读入txt格式的数据为例子。第一步打开R软件包,读入数据。第二部使用转换矩阵命令as.matrix(),使读入的搏州弯数据变成矩阵格式。第三部验证是否转换成功,命令is.matrix()返回TRUE表示转换成功。

8. R语言如何将数据框转化为矩阵

第一步:导入数据

  data1<-read.table('clipboard',header=T)  (其中,将EXCEL表格中的数据先复制,然后进行导入,即可),

第二步:将键蚂罩数据框转化为矩阵(A)

A<-as.matrix(data1)  

第三步:将数据框的第一行的标题去掉

 colnames(A)<-NULL

第四步:求矩阵A的稿闹转置阵,设转置阵为A1

A1<-t(A)

第五物塌部:计算矩阵A与其转置阵A1相乘

 H1<-A%*%A1

9. R语言,怎么把有字符型和数字型两种类型数据的数据框转化为矩阵

as.matrix(data)就行了。不过矩阵唤缓里面所有元配链肢素必须是同样类型的,也就是说按你的要求做了之后矩阵里所有元素都是字符培世串。

10. R语言数据结构-数据框&矩阵&列表

R语言数据结构主要有以下四种:

四种数据结构,重点掌握 向量 数据框

判断数据结构的函数: class()

向量的详细讲解在上一篇文章,以下主要讲数据框,矩阵,列表:

以下大部分操作使用的数据框为df

几个重要的函数:查看数据框的行数和列数,行名和列名;以及单独查行的数量,列的数量

数据框取子集有几种方法 : $ 符号,坐标,名字,逻辑值

在 [,] 里,行在前面(左边),列在后面(右边),行与列用逗号 , 隔开: [行,列]

中括号里的逗号,表示维度的分割

数据框按照逻辑值取子集,TRUE对应的行/列留下,FALSE对应的行/列去掉。

修改第二列的列名,就是修改列名这个向量的第二个元素

https://blog.csdn.net/weixin_39718006/article/details/110516670

后续的笔记会有详细介绍

矩阵不能用 $ 符号取子集

t():转置函数,行与列的互换悄帆

as.data.frame():转换,把矩阵变为数据框 ,用as.matrix()函数也能把数据框变为矩阵

聚类,相似的行,相似的列会聚在一起。热图自动聚类,行和列的相对位置发生了变化,只是列与列,行与行之间的变化规律。

![热图自动聚类]]( https://upload-images.jianshu.io/upload_images/17511166-f6e2432a04cffbbe.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240 )

热图默认聚类,修改参数,不让聚类,热图与表达矩阵对应。

默认的设置不符合自己的预期,可以子啊作者允许的范围内定义。

查看函数帮助文档,参考修改,达到自己的要求。

列念山表没有列名和行名,只有元素的名字。列表可以由数据框,矩阵,向量,单独的一个数字都可以组成。

列表没有行和列的概念,只有元素,取子集的两种方式: [[]] , $ ,

$ 有两个作用:数据框取子集和列表取子集。在矩阵和向量里不能用 $ 。

用 class() 函数更能具体说明问题, 判断数据结构和数据类型

以上内容是听 生信技能树 小洁老师的 R语言线上课 ,根据自己的仔运中理解记录下来,小洁老师授课非常细心,对不同水平的同学都照顾到,并且补充很多技巧以及注意事项。

认识R语言的四种数据结构,小洁老师强调重点掌握向量和数据框,在实战中遇到很多数据结构都是数据框,表达矩阵可以转化为数据框,数据框的一列可以看做是一个向量。小洁老师把实战中会需要的操作融入到练习题,在实战中能联想起小洁老师讲过的知识点。