首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我在PerformanceAnalytics中收到带有apply.fromstart的"Error in 1:columns : argument of length 0“

为什么我在PerformanceAnalytics中收到带有apply.fromstart的"Error in 1:columns : argument of length 0“
EN

Stack Overflow用户
提问于 2013-11-08 07:00:30
回答 2查看 8.1K关注 0票数 1

最终,我想要绘制各种统计属性中的变化(收敛到真值),并在数据的一系列随机排列上迭代地执行。我想使用PerformanceAnalytics中的apply.fromstart来生成随着数据集的增长而变化的统计数据。

我的数据集如下所示:

代码语言:javascript
复制
qpcr_a100p.z <-
structure(c(115.3, 108.4, 112.8, 101, 107.6, 84.9, 87.7, 94.7, 
108.3, 107.3, 115, 79.1, 70.1, 61, 125.5, 111.1, 67.7, 119.4, 
85.5, 109.3, 68.5, 98.3, 71.8, 81.6, 96, 140.8, 75.3, 83.6, 90.6, 
107.5), index = c(30, 94, 103, 104, 114, 120, 155, 234, 240, 
272, 289, 314, 439, 492, 502, 544, 547, 557, 564, 592, 656, 775, 
783, 803, 805, 855, 856, 870, 929, 985), class = "zoo")

但是,当我尝试运行apply.fromstart时,我得到一个错误

代码语言:javascript
复制
> library(PerformanceAnalytics)
> apply.fromstart(qpcr_a100p.z, FUN = "mean", gap = 1)
Error in 1:columns : argument of length 0

我尝试了apply.fromstart命令的一些变体,包括:

代码语言:javascript
复制
> apply.fromstart(qpcr_a100p.z[,1,drop=FALSE], FUN = "mean", gap = 1)

但我仍然得到相同的错误。

EN

回答 2

Stack Overflow用户

发布于 2013-11-08 08:27:33

很明显,函数apply.fromstart中的数据类型不匹配(我认为问题出在变量的时间安排上)。如果您的zoo对象名为qpcr_a100p.z,我建议使用以下解决方法:

代码语言:javascript
复制
dat=na.omit(as.xts(as.ts(qpcr_a100p.z)))
apply.fromstart(dat, FUN = "mean", gap = 1)  

它产生以下结果:

代码语言:javascript
复制
> as.numeric(apply.fromstart(dat, FUN="mean", gap=1))

 [1] 115.30000 111.85000 112.16667 109.37500 109.02000 105.00000 102.52857
 [8] 101.55000 102.30000 102.80000 103.90909 101.84167  99.40000  96.65714
[15]  98.58000  99.36250  97.50000  98.71667  98.02105  98.58500  97.15238
[22]  97.20455  96.10000  95.49583  95.51600  97.25769  96.44444  95.98571
[29]  95.80000  96.19000
票数 0
EN

Stack Overflow用户

发布于 2013-11-08 21:38:57

错误是因为您的qpcr_a100p.z zoo对象没有dim属性,所以从技术上讲它没有任何列。此外,apply.fromstart预计会有一个基于时间的索引。

因此,设置dims并将索引转换为Date,函数就会起作用。

代码语言:javascript
复制
dim(qpcr_a100p.z) <- c(NROW(qpcr_a100p.z),NCOL(qpcr_a100p.z))
index(qpcr_a100p.z) <- as.Date(index(qpcr_a100p.z), origin="1970-01-01")
out <- apply.fromstart(qpcr_a100p.z, FUN = "mean", gap = 1)
# convert the index back to numeric, if necessary
index(out) <- as.numeric(index(out))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19848470

复制
相关文章

相似问题

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