找回密码
 立即注册
查看: 4494|回复: 3

请教各位,数据框和矩阵有什么区别??

[复制链接]
发表于 2014-5-10 21:44:25 | 显示全部楼层 |阅读模式
请教大家一个问题,数据框和矩阵有什么区别,为什么有的函数要求变量必须是数据框而不能是矩阵呢?比如sapply函数,就要求包涵数据的变量必须是数据框而不能是矩阵否者出错。比如下面两条代码,第一条算出来就一个很长的数据向量,第二条代码才能得出结果。
sapply(cbind(Veg$R, Veg$ROCK, Veg$LITTER, Veg$ML, Veg$BARESOIL), FUN = mean)
sapply(data.frame(cbind(Veg$R, Veg$ROCK, Veg$LITTER, Veg$ML, Veg$BARESOIL)), FUN = mean)


请教各位大神!!!!
回复

使用道具 举报

发表于 2014-5-11 15:47:42 | 显示全部楼层
  1. ?sapply
复制代码
很容易就看到了,具体数据框和矩阵有什么不同,我知道一些,但肯定不全面。但至少每个函数数据输入都是有自己的要求的。所以你的是等同于这些的:
  1. sapply(as.list(cbind(Veg$R, Veg$ROCK, Veg$LITTER, Veg$ML, Veg$BARESOIL)), FUN = mean)
  2. is.list(data.frame(cbind(Veg$R, Veg$ROCK, Veg$LITTER, Veg$ML, Veg$BARESOIL)))
  3. #TRUE
  4. sapply(data.frame(cbind(Veg$R, Veg$ROCK, Veg$LITTER, Veg$ML, Veg$BARESOIL)), FUN = mean)
复制代码
回复

使用道具 举报

发表于 2014-5-14 10:51:21 | 显示全部楼层
俺的理解:
矩阵存储的是纯量数据,不含对数据的说明;数据框可以将矩阵的内容已经针对这些内容的描述一起存储。
例如,你买了一盒牛奶,牛奶就是“矩阵”,牛奶连同盒子是“数据框”;如果你只是把牛奶倒进购物袋,盒子扔掉,那sapply这个“购物袋”会作何反应?
回复

使用道具 举报

发表于 2014-5-14 16:56:52 | 显示全部楼层
我的理解是:
1、数据框具有矩阵和列表的性质,所以数据框可以通过行(列)号或列名称进行索引;
2、sapply用于矩阵是和apply用于矩阵类似,针对的审核矩阵的行(或列)得到的结果是个向量;应用于列表实际是个子列表,得到的结果自然就是矩阵(数据框)。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 10:24 , Processed in 0.024056 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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