向向量中添加NA值

3

假设我有一个价格向量:

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

我想要获得距离x个周期以前的百分比变化,并将其存储到另一个向量中,我称之为log_returns。由于foo和log_returns向量长度不同,因此无法将它们绑定到数据框中。因此,我希望能够将NA添加到log_returns,以便将其放入数据框中。我找到了一种在向量末尾添加NA的方法:

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

但这只有在我查看百分比变化1个周期之前的情况下才有用。我正在寻找一种方法来填补NA,无论我投入多少滞后,使得百分比变化向量的长度等于foo向量。
任何帮助都将不胜感激!

你可以将其存储在列表中。 - user3710546
5
下面的答案不错,但是如果你有一个长度不同的向量列表,你可以像这样做:l <- list(1, 1:2, 1:5); data.frame(lapply(l, \length<-`, max(lengths(l))))` - rawr
2个回答

3

你可以使用自己修改过的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到10的数字以矩阵形式排列,矩阵包含5行2列的元素,并且第二列被赋值为NA和#,然后将元素1到10制作成一个5*2的矩阵。 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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接