gpt4 book ai didi

r - 计算投资组合(ETF)的对数返回率时出现R错误

转载 作者:行者123 更新时间:2023-12-03 07:51:00 24 4
gpt4 key购买 nike

我试图计算世界指数(标签ACW)投资组合和国家指数投资组合(CHI)的对数 yield 。世界索引有效,但国家索引却给我一个错误:“只有0可以与负下标混合使用”。我已经整理了数据,并且其中没有零或负数。我疯了试图解决它。我是第一次学习R,所以这可能是一个非常基本的问题,但是我无法在网上找到答案。这是代码,

> data <- read.table("C:/Documents and Settings/Emma/My Documents/data.csv",header=T,sep=",")
> data <- data.frame(data)

> td<-length(data$date)
> t<-td-1

> acwr<-250*log(data$acw[2:td]/data$acw[1:(td-1)])
> chir<-250*log(data$chi[2:td]/data$chi[1:(td-1)])
Error in data$chi[1:(td - 1)] :
only 0's may be mixed with negative subscripts
> traceback()
No traceback available

任何建议或帮助将不胜感激!

最佳答案

当然,这全都基于猜测。

但我认为....

您的数据没有date列。您的根本失败是不检查这一点。

因此td为零。您的第二个失败是不检查这一点。

然后,您尝试对data$acw[1:(td-1)]下标。您说这有效,因为它不会返回错误。但是您还没有检查。我猜它返回NULL,因为您的数据没有acw列。因此data$acw为NULL,R不在乎如何尝试对NULL进行子集化。您返回NULL。您的第三次失败是不检查这一点。

然后,您尝试对data$chi[1:(td-1)]下标。这失败,因为存在data$chi,并且:

> 1:(td-1)
[1] 1 0 -1

因此您的下标中包含+1和-1。

并且在R下标中,这是说要获得元素1而不是元素1(零无关紧要)。所以失败了。

如果您完成了 summary(data)或向我们展示了数据文件,那么所有这些都将显而易见。目前,只是猜测,直到您向我们展示这些东西,这将为我节省二十分钟。

尝试将R分解为元素,并检查它们是否都符合您的期望。作为一种解释性语言,R使您轻松实现这一目标。

当然,您真正应该做的是,当尝试使用 data$date时,不要检查元素的长度以获取数据帧的行数。有一个 nrow函数。

关于r - 计算投资组合(ETF)的对数返回率时出现R错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12444834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com