zoo - 将coredata舍入为整数

时间:2015-08-19 07:44:24

标签: r rounding lapply zoo

我已经获得了69个"个对象的列表,我使用zoo填补了一些空白,但由于我的时间序列处理计数,我需要将估算值设为整数。

此代码

na.approx

给我以下错误消息

list_int <- lapply(list_dec, round(coredata(list_dec), digits=0)) 

我认为将函数应用于列表而不是向量,但函数

是一个问题
Error in round(coredata(list_dec), digits=0) : 
  non-numeric argument to mathematical function

正确显示所有69个时间序列(不需要coredata(list_dec) )。

那么,为什么lapply round可以适用于coredata

已编辑

正如这里建议的那样,是一个最小数据集

 A1 <- runif(20, min=-5, max=13)
 A2 <- runif(20, min=-1, max=5)
 A3 <- runif(20, min=-3, max=10)
 A4 <- runif(20, min=0, max=2)
 ls <- list(A1, A2, A3, A4)
 list_dec <- lapply(ls, as.zoo)

1 个答案:

答案 0 :(得分:0)

正如评论中所讨论的,您可以通过以下方式完成您想要的任务:

> library(zoo)
> A1 <- runif(20, min=-5, max=13)
> A2 <- runif(20, min=-1, max=5)
> A3 <- runif(20, min=-3, max=10)
> A4 <- runif(20, min=0, max=2)
> ls <- list(A1, A2, A3, A4)
> list_dec <- lapply(ls, as.zoo)

现在list_dec如下所示:

> list_dec
[[1]]
          1           2           3           4           5           6           7           8           9          10          11          12          13 
 9.20889929  8.03050882  1.52621137  9.91528049 12.71637959 11.93573340  3.34967427  9.75224030  7.90654714  0.08199464 -2.84403691 11.57990103  4.74868873 
         14          15          16          17          18          19          20 
 2.94023319 10.71812525 -2.05394366 -1.07669056  7.17503613  4.84871327  4.58929978 

[[2]]
         1          2          3          4          5          6          7          8          9         10         11         12         13         14         15 
 1.0756646  0.5615212  0.5697795  0.9629726  2.5962021  3.1932062  0.6894849  1.9844943  1.3351256  4.0043998  0.4756172  0.4573920  0.6009208  4.4963877  4.4149804 
        16         17         18         19         20 
 3.7762369  2.9670795 -0.8241576  2.1796402  2.5504061 

[[3]]
         1          2          3          4          5          6          7          8          9         10         11         12         13         14         15 
 1.5765136  1.7310402  0.7273943  4.0838831 -0.9946958 -2.0222258  7.5756159  3.9105252  3.9006369 -0.9939739  4.7603811  8.5079521  3.3653795  0.8546201  3.8143874 
        16         17         18         19         20 
 5.0847501 -2.6324485  2.0860695  5.7202315  9.5304238 

[[4]]
         1          2          3          4          5          6          7          8          9         10         11         12         13         14         15 
1.36751418 1.44009472 1.41155170 1.55018689 1.31378442 1.09746739 0.09224919 0.66425731 0.61047787 1.63552109 1.56096710 1.59775494 1.69658733 1.08939868 1.96183397 
        16         17         18         19         20 
1.20476936 0.94640977 0.73820689 0.65899943 1.54647028 

现在您可以直接拨打lapply,如下所示:

lapply(list_dec,round)

为您提供所需的输出:

[[1]]
 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 
 9  8  2 10 13 12  3 10  8  0 -3 12  5  3 11 -2 -1  7  5  5 

[[2]]
 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 
 1  1  1  1  3  3  1  2  1  4  0  0  1  4  4  4  3 -1  2  3 

[[3]]
 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 
 2  2  1  4 -1 -2  8  4  4 -1  5  9  3  1  4  5 -3  2  6 10 

[[4]]
 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 
 1  1  1  2  1  1  0  1  1  2  2  2  2  1  2  1  1  1  1  2