楼主: raray
3630 6

[问答] 请问数据框中嵌套的矩阵是如何生成和提取的? [推广有奖]

  • 0关注
  • 0粉丝

已卖:1060份资源

硕士生

61%

还不是VIP/贵宾

-

威望
0
论坛币
7544 个
通用积分
3.9706
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
1828 点
帖子
21
精华
0
在线时间
340 小时
注册时间
2013-7-26
最后登录
2024-5-29

楼主
raray 发表于 2016-6-6 16:25:32 |AI写论文
5论坛币
新手,问一个数据转换的问题:

lars包中的数据框diabetes里面有3个变量(x y x2),其中x和x2是矩阵
在RStudio里面直接打开是这样的:
无标题.png

我想把矩阵数据提取出来,重新生成一个不是嵌套matrix的数据框,类似于这样:

无标题.png



####################################################
#数据和测试代码
install.packages("lars")
library("lars");
data("diabetes");
x = diabetes$x;  #RStudio里面显示变量的Type是AsIs,不是期望的matrix
fix(x); #会蹦出来一个文本文件

#as.matrix和as.data.frame的结果都不对...
xm = as.matrix(x); #Type还是AsIs  不是期望的matrix

xm = as.data.frame(x); #Type是data frame 但matrix还是嵌套在里面,不是期望的结果


#重新构造一个matrix倒是可以
xm = matrix(x,dim(x)[1],dim(x)[2]);
colnames(xm) = colnames(x);


请问:
1. AsIs算什么数据格式?
2. 嵌套matrix的data.frame是用什么命令生成的?
3. 有没有类似as.matrix之类的命令,能够直接变成matrix或者data frame(而不是matrix+colnames两步)???


最佳答案

关键词:数据框 Diabetes Packages RStudio Library 数据框

沙发
bbslover 在职认证  发表于 2016-6-6 16:25:33
x <- diabetes$x
class(x) <- class(x)[-match("AsIs", class(x))]
attr(x, "dimnames") <- NULL
str(x)
is.matrix(x)

藤椅
raray 发表于 2016-6-6 21:13:02
bbslover 发表于 2016-6-6 16:25
x
谢谢~~~~

能不能再解释下
1. 为啥执行class(x) = NULL就能把x变成matrix了?
2. 有什么参考书讲了相关的知识么?

板凳
bbslover 在职认证  发表于 2016-6-6 22:08:11
class(x)[-match("AsIs", class(x))]  看一下这个结果
attr(x, "dimnames") <- NULL  这步之后,才是矩阵

报纸
raray 发表于 2016-6-7 10:03:08
bbslover 发表于 2016-6-6 22:08
class(x)[-match("AsIs", class(x))]  看一下这个结果
attr(x, "dimnames")
class(x)[-match("AsIs", class(x))]      结果是  character(0)
这一句已经把数据变成Matrix了..
使用 class(x) = NULL; 的结果是一样的

attr(x, "dimnames") <- NULL   这一句把列名去掉了....为什么去掉这个?我还需要保留着列名呢


地板
bbslover 在职认证  发表于 2016-6-7 20:22:47
ok  如果你要保留名字,也可以不去掉

7
bbslover 在职认证  发表于 2016-6-7 20:23:28
另外,你也可以   colnames(x) <- colNames  给矩阵增加列名

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-10 21:07