【问题标题】:An equivalence for "array_push()" in RR中“array_push()”的等价物
【发布时间】:2014-05-21 16:22:55
【问题描述】:

我在 R 中有一个列表,由时间序列对象组成:

X<-list(a, b, c, ..., n)

这个列表很大,我想:

  1. 为列表中的每个对象创建一个新对象。
  2. 将这些对象“推”到列表末尾。
  3. 分解第一个时间序列对象(a,...,n)并将这些分解的对象保存为步骤 1) 中新创建的新对象。

有没有办法轻松做到这一点?我错过了一个重要的包裹吗?

【问题讨论】:

标签: arrays r list


【解决方案1】:

只是为了具体说明(我认为)尼尔的建议:

a=cumsum(rnorm(100))
b=cumsum(rnorm(200))
c=cumsum(rnorm(10))
d=cumsum(rnorm(50))

X=list(a=a,b=b,c=c,d=d)

createnewobjfun=function(x) sin(x)

Xnew=c(X,lapply(X, createnewobjfun ) )

然后检查 X 和 Xnew 的结构,看看它是否符合您的期望。

> str(X)
List of 4
 $ a: num [1:100] 1.239 0.363 0.698 1.73 0.935 ...
 $ b: num [1:200] 1.94 2.41 4.18 2.21 3.35 ...
 $ c: num [1:10] 0.491 -0.273 -0.422 1.399 0.362 ...
 $ d: num [1:50] 0.465 1.828 1.595 0.976 -0.476 ...
> 
> str(Xnew)
List of 8
 $ a: num [1:100] 1.239 0.363 0.698 1.73 0.935 ...
 $ b: num [1:200] 1.94 2.41 4.18 2.21 3.35 ...
 $ c: num [1:10] 0.491 -0.273 -0.422 1.399 0.362 ...
 $ d: num [1:50] 0.465 1.828 1.595 0.976 -0.476 ...
 $ a: num [1:100] 0.946 0.355 0.643 0.987 0.804 ...
 $ b: num [1:200] 0.931 0.671 -0.861 0.805 -0.203 ...
 $ c: num [1:10] 0.472 -0.27 -0.41 0.985 0.354 ...
 $ d: num [1:50] 0.449 0.967 1 0.828 -0.458 ...

所以命名有问题,我认为可以在您的 lapply 电话中解决

我不知道你在第 3 步中描述了什么。

【讨论】:

  • 使用Xnew=c(X,new=lapply(X, createnewobjfun ) ) 会以一种有用的方式区分名称。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-14
  • 2016-02-26
  • 2018-07-18
  • 2016-06-14
  • 2016-05-23
  • 2014-12-30
  • 1970-01-01
相关资源
最近更新 更多