首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R-重塑-熔化错误

R-重塑-熔化错误
EN

Stack Overflow用户
提问于 2013-01-07 03:37:16
回答 2查看 2.9K关注 0票数 0

我试图融化一个数据框,但我得到了这个奇怪的错误。你知道为什么吗?

代码语言:javascript
复制
str(zx7)
'data.frame':   519 obs. of  5 variables:
 $ calday.new: Date, format: "2011-01-03" "2011-01-04" "2011-01-05" "2011-01-06" ...
 $ A20    : Time-Series  from 1 to 519: 0 0 0 0 0 0 0 0 0 0 ...
 $ B20    : Time-Series  from 1 to 519: 0 0 0 0 0 0 0 0 0 0 ...
 $ C20    : Time-Series  from 1 to 519: 0 0 0 0 0 0 0 0 0 0 ...
 $ D20    : Time-Series  from 1 to 519: 0 0 0 0 0 0 0 0 0 0 ...

zx7.melt <- melt(zx7, id=c("calday.new"))
Error in `[<-.ts`(`*tmp*`, ri, value = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  : only replacement of elements is allowed
EN

回答 2

Stack Overflow用户

发布于 2013-01-07 15:21:33

我不知道你是如何创建你的结构的,但是当我这样做的时候,它对我来说是有效的

代码语言:javascript
复制
zx7 <- data.frame( calday.new=seq(from = as.Date('2011-01-03'),by=1,length.out=519),
                   A20=ts(rep(0,519)),
                   B20=ts(rep(0,519)),
                   C20=ts(rep(0,519)),
                   D20=ts(rep(0,519)))

我创建了与上面相同的结构:

代码语言:javascript
复制
str(zx7)
'data.frame':   519 obs. of  5 variables:
 $ calday.new: Date, format: "2011-01-03" "2011-01-04" "2011-01-05" ...
 $ A20       : Time-Series  from 1 to 519: 0 0 0 0 0 0 0 0 0 0 ...
 $ B20       : Time-Series  from 1 to 519: 0 0 0 0 0 0 0 0 0 0 ...
 $ C20       : Time-Series  from 1 to 519: 0 0 0 0 0 0 0 0 0 0 ...
 $ D20       : Time-Series  from 1 to 519: 0 0 0 0 0 0 0 0 0 0 ...

然后我融化了:

代码语言:javascript
复制
head(melt(zx7, id=c("calday.new")))
  calday.new variable value
1 2011-01-03      A20     0
2 2011-01-04      A20     0
3 2011-01-05      A20     0
4 2011-01-06      A20     0
5 2011-01-07      A20     0
6 2011-01-08      A20     0
票数 2
EN

Stack Overflow用户

发布于 2013-01-09 16:27:52

问题是,旧的“重塑”包的melt()函数在遇到具有类ts的对象时不知道该如何处理。

因此,您有两个明显的选择(尽管可能还有更多):

melt()数据之前,先对当前分类为ts的变量执行melt()操作:

zx7b <- zx7 #备份,只是以防万一(Reshape)#注意这是“重塑”,而不是"reshape2“头(melt(zx7b,id=c(”calday.new“))#不起作用#[<-.ts中的错误(\*tmp\*,ri,value = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0):#只允许替换元素##取消data.frame zx7bsapply(zx7b,is.ts)中相关列的类别<- lapply(zx7bsapply(zx7b,is.ts),未分类)头部(熔化(zx7b,Id=c(“calday.new”)#calday.new变量值#1 2011-01-03 A20 0#2 2011-01-04 A20 0#3 2011-01-05 A20 0#4 2011-01-06 A20 0#5 2011-01-07 A20 0#6 2011-01-08 A20 0

  • 升级为"reshape2“,无需解类。

library(reshape2) #请注意,这是reshape2!head( Melt (zx7,id=c(“calday.new”))#熔化原来的data.frame #calday.new变量值#1 2011-01-03 A20 0#2 2011-01-04 A20 0#3 2011-01-05 A20 0#4 2011-01-06 A20 0#5 2011-01-07 A20 0#6 2011-01-08 A20 0

我并没有花时间去做这件事,但是您可以从每个版本的“重塑”包中检查melt()melt.data.frame方法的代码,并查看差异所在。安装这两个包,然后输入reshape2:::melt.data.framereshape:::melt.data.frame查看底层函数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14185928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档