R Apply功能正在输出零

时间:2014-03-14 17:27:31

标签: r

我想将滚动功能应用于数据集但是我使用rollapply得到了错误的输出。我提供了一个可以测试的数据集。

这是我的数据集:

library(zoo)
source('k.r')

set.seed(2)
data<-runif(60, min= 1, max= 4) ########this is my data
cbind(data)
#this is a call to rollapply and my "k" function
k<-rollapply(data, 21, FUN="k")
k


################here is my "k" function
k<- function(data)
{
  minData<-min(data)
  maxData<-max(data)
  value <-   ( data[length(data)]- minData)/(maxData - minData)    * 100
}

k的输出低于,我的问题是为什么有2&#34; 0&#34;元素和&#34; 100&#34;元件。当我在excel中粘贴数据向量的值并执行此计算时,我得不到0或100.

作为一个仔细检查,如果你将cbind(数据)的值粘贴到excel中,你可以使用这个公式来看到不应该有&#34; 0&#34;或&#34; 100&#34;: =(B22-MIN(B2:B21))/(MAX(B2:B21)-MIN(B2:B21))* 100

65.1105969
34.6753392
84.5233679
8.378125
30.2071295
45.9047099
8.2389469
31.2932327
98.4741346
6.3669142
0
15.9658672
82.7940886
88.8675737
52.1610354
63.8501035
87.5854463
28.8224679
68.9761351
14.7081374
100
29.5060511
10.7760849
15.7298722
96.120093
80.7617139
99.2752118
34.8676243
50.6072898
82.3609341
0
0.7782399
69.3906549
94.6637968
27.5279067
82.57081
79.9050722
100
61.80975
71.6114912

任何想法为什么rollapply正在撤退&#34; 0&#34;和&#34; 100&#34;?

谢谢。

1 个答案:

答案 0 :(得分:0)

excel公式在最小值和最大值的计算中排除data[length(datea)],但函数k包含它。