data.frame(…,check.names=FALSE)中出错:参数表示行数不同:67906771
我已经按照说明计算了,它可以很好地计算我的数据集的每日回报。现在,当我计算最新日期的月度回报时,我的问题就开始了。使用公式获得月度回报:data.frame(…,check.names=FALSE)中出错:参数表示行数不同:67906771,r,xts,R,Xts,我已经按照说明计算了,它可以很好地计算我的数据集的每日回报。现在,当我计算最新日期的月度回报时,我的问题就开始了。使用公式获得月度回报: logs=data.frame( cbind.data.frame( prices$Date[-1], na.locf(diff(as.matrix(log(prices[,-1])), lag = 20)) ) ) 我得到: data.frame(…,check.names=FALS
logs=data.frame(
cbind.data.frame(
prices$Date[-1],
na.locf(diff(as.matrix(log(prices[,-1])), lag = 20))
)
)
我得到:
data.frame(…,check.names=FALSE)中出错:参数暗示
不同的行数:67906771
可以理解的是,行数的差异来自于我用来获取截止日期的月报表的20天延迟。我还需要计算截止日期的年度回报率,我想我这样做的时候也会得到同样的错误。我尝试使用merge.data.frame
而不是cbind.data.frame
,但只导致我的计算机崩溃
我获取了数据集的前10行和前10列:
Date `2GO` AAA AB ABA ABG ABS AC ACE ACR
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 28-Jun-17 23.25 1.61 14.98 0.37 28.25 42.85 841.5 1.61 1.50
2 27-Jun-17 23.90 1.61 14.98 0.37 27.95 42.90 842.5 1.61 1.53
3 23-Jun-17 24.60 1.61 14.98 0.38 27.00 42.90 840.5 1.70 1.57
4 22-Jun-17 24.40 1.61 14.98 0.37 28.05 43.20 855.0 1.67 1.57
5 21-Jun-17 24.80 1.61 15.00 0.37 28.05 43.10 841.5 1.67 1.57
6 20-Jun-17 25.10 1.61 14.68 0.37 28.85 43.45 858.0 1.70 1.58
7 19-Jun-17 24.85 1.61 14.68 0.37 29.05 43.40 860.0 1.75 1.55
8 16-Jun-17 25.70 1.61 14.68 0.38 29.60 43.45 850.0 1.77 1.52
9 15-Jun-17 26.20 1.61 14.48 0.38 29.55 43.30 867.0 1.69 1.53
10 14-Jun-17 26.85 1.61 16.00 0.37 29.50 43.35 867.5 1.69 1.52
仍然显示一个错误:
data.frame(…,check.names=FALSE)中出错:参数暗示
不同的行数:9、66
有没有办法纠正错误/修复行号
根据更新的问题进行编辑
由于20个周期的滞后在初始周期中不存在,您可以使用NA进行填充。问题是prices$Date[-1]
的行数与na.locf(diff(as.matrix(log(prices[,-1])),lag=20))的行数不同。您应该确保它们的行数相等。例如:
p = read.table(text="Date `2GO` AAA AB ABA ABG ABS AC ACE ACR
28-Jun-17 23.25 1.61 14.98 0.37 28.25 42.85 841.5 1.61 1.50
27-Jun-17 23.90 1.61 14.98 0.37 27.95 42.90 842.5 1.61 1.53
23-Jun-17 24.60 1.61 14.98 0.38 27.00 42.90 840.5 1.70 1.57
22-Jun-17 24.40 1.61 14.98 0.37 28.05 43.20 855.0 1.67 1.57
21-Jun-17 24.80 1.61 15.00 0.37 28.05 43.10 841.5 1.67 1.57
20-Jun-17 25.10 1.61 14.68 0.37 28.85 43.45 858.0 1.70 1.58
19-Jun-17 24.85 1.61 14.68 0.37 29.05 43.40 860.0 1.75 1.55
16-Jun-17 25.70 1.61 14.68 0.38 29.60 43.45 850.0 1.77 1.52
15-Jun-17 26.20 1.61 14.48 0.38 29.55 43.30 867.0 1.69 1.53
14-Jun-17 26.85 1.61 16.00 0.37 29.50 43.35 867.5 1.69 1.52",header=T)
p=p[order(p$Date),]
logs=data.frame(
cbind.data.frame(
Date = p$Date[4:nrow(p)],
na.locf(diff(as.matrix(log(p[,-1])), lag = 3))
)
)
输出:
Date X.2GO. AAA AB ABA ABG ABS
7 19-Jun-17 -0.07740807 0 -0.086102699 0.00000000 -0.015371780 0.001152738
6 20-Jun-17 -0.04289156 0 0.013717636 -0.02666825 -0.023973751 0.003458217
5 21-Jun-17 -0.03564734 0 0.021564178 -0.02666825 -0.053785729 -0.008087855
4 22-Jun-17 -0.01827462 0 0.020229955 0.00000000 -0.035029851 -0.004618946
3 23-Jun-17 -0.02012140 0 0.020229955 0.02666825 -0.066273127 -0.012739026
2 27-Jun-17 -0.03696519 0 -0.001334223 0.00000000 -0.003571432 -0.004651171
1 28-Jun-17 -0.04827800 0 0.000000000 0.00000000 0.007104826 -0.008134850
AC ACE ACR
7 -0.008683123 0.034887259 0.019544596
6 -0.010434877 0.005899722 0.032157112
5 -0.010050336 -0.058155920 0.032365285
4 -0.005830920 -0.046792162 0.012820688
3 -0.020607147 0.000000000 -0.006349228
2 0.001187649 -0.036589447 -0.025807884
1 -0.015915455 -0.036589447 -0.045610511
不要忘记检查输出是否如预期的那样。我只是告诉您为什么代码不起作用,以及一种匹配语句中行数的方法,我不熟悉您正在执行的操作。希望这有帮助 嗨@Florian,谢谢你在这件事上帮助我。不幸的是,我仍然得到同样的错误,使用你上面发布的公式,只是不同的数字从67906771到67901855547。我测试了你的第一个代码,它是有效的,但我不知道为什么第二个不会。有没有办法做一个小例子,例如,以数据集的前十行为例,使用3的延迟?然后粘贴您在问题中使用的数据,请查看,这样可以更容易地帮助您。嗨@Florian,为没有发布示例而道歉。我在我的原始帖子中包含了数据集的前10行和前10列,并使用3作为你提供的公式的延迟。谢谢@Florian!这很有帮助。为了确保我完全理解更新后的公式,4 in Date=p$Date[4:nrow(p)]对应于lag+1,对吗?是的,这样做会跳过p$Date列的前3行。顺便说一句,我认为您应该先让p dataframe在日期列上降序,以执行您想要执行的操作。我更新了示例。如果这对你有效,你能接受我的回答吗?谢谢
Date X.2GO. AAA AB ABA ABG ABS
7 19-Jun-17 -0.07740807 0 -0.086102699 0.00000000 -0.015371780 0.001152738
6 20-Jun-17 -0.04289156 0 0.013717636 -0.02666825 -0.023973751 0.003458217
5 21-Jun-17 -0.03564734 0 0.021564178 -0.02666825 -0.053785729 -0.008087855
4 22-Jun-17 -0.01827462 0 0.020229955 0.00000000 -0.035029851 -0.004618946
3 23-Jun-17 -0.02012140 0 0.020229955 0.02666825 -0.066273127 -0.012739026
2 27-Jun-17 -0.03696519 0 -0.001334223 0.00000000 -0.003571432 -0.004651171
1 28-Jun-17 -0.04827800 0 0.000000000 0.00000000 0.007104826 -0.008134850
AC ACE ACR
7 -0.008683123 0.034887259 0.019544596
6 -0.010434877 0.005899722 0.032157112
5 -0.010050336 -0.058155920 0.032365285
4 -0.005830920 -0.046792162 0.012820688
3 -0.020607147 0.000000000 -0.006349228
2 0.001187649 -0.036589447 -0.025807884
1 -0.015915455 -0.036589447 -0.045610511