将NA添加到矢量

时间:2016-02-05 01:52:03

标签: r

假设我有一个价格向量:

foo <- c(102.25,102.87,102.25,100.87,103.44,103.87,103.00)

我希望从x时期前获得百分比变化,并将其存储到另一个我称之为log_returns的向量中。我无法将向量foo和log_returns绑定到data.frame中,因为向量长度不同。所以我希望能够将NA附加到log_returns,以便我可以将它们放在data.frame中。我想出了一种在向量末尾附加NA的方法:

log_returns <- append((diff(log(foo), lag = 1)),NA,after=length(foo)) 

但是,如果我正在考虑之前的1个百分比变化,这只会有所帮助。无论我投入多少滞后,我都在寻找一种填充NA的方法,以便百分比变化向量与foo向量的长度相等

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

您可以使用自己的diff修改:

mydiff <- function(data, diff){
  c(diff(data, lag = diff), rep(NA, diff))
}

mydiff(foo, 1)
[1]  0.62 -0.62 -1.38  2.57  0.43 -0.87    NA

data.frame(foo = foo,  diff = mydiff(foo, 3))

     foo  diff
1 102.25 -1.38
2 102.87  0.57
3 102.25  1.62
4 100.87  2.13
5 103.44    NA
6 103.87    NA
7 103.00    NA

答案 1 :(得分:-1)

假设您有一个数字 1 到 10 以矩阵形式排列的数组,其中 矩阵包含来自 5 行 2 列和第 2 列的元素,要分配给 NA ,# 然后制作一个 5*2 元素矩阵 1:10 enter image description here

Array_test=array(c(1:10),dim=c(5,2,1)) 
Array_test
Array_test[ ,2, ]=c(NA)# Defining 2nd column to get NA
Array_test
# Similarly to make only one element of the entire matrix be NA 
# let's say 4nd-row 2nd column to be made NA then
Array_test[4 ,2, ]=c(NA)