请注意:我是R新手(问题可能很清楚)。
我试图将一些输出夜间返回次数超过.05的代码转换为可以采用多个代码的循环。令人沮丧的是,尽管我付出了最大的努力,但我显然没有成功地将结果捆绑在一起,也许是因为我曾经习惯使用的rbind和cbind不是单个值,即使它&# 39;在DF中。我想要最终得到的是一个数字,(或我可以添加的值的DF),它显示所有输入代码的过夜返回值> .05(存储在TEST.xlsx的第1列中) 。非常感谢你的帮助,我很感激!
原始(工作)代码:
library(quantmod)
data1 <- getSymbols(Symbols = "AAPL", src = "yahoo", from = Sys.Date() - 525, auto.assign = FALSE)
de = head(data1,365)
colnames(de) <- c("open","high","low","close","volume","adj.")
overnightRtn <- as.data.frame(as.numeric(de[2:nrow(de),"open"])/as.numeric(de[1:(nrow(de)-1),"close"])) - 1
r = overnightRtn[overnightRtn>.05, ]
results = NROW(r)
View(results)
循环尝试:
library(gdata)
d = read.xls("~/Documents/TEST.xlsx", sheet = 1, stringsAsFactors=F)
library(quantmod)
sym <- as.character(d[,1])
results <- NULL
for (i in sym){
data1 <- try(getSymbols(Symbols = i, src = "yahoo", from = Sys.Date() - 525, auto.assign = FALSE))
if(inherits(data1, "try-error")) next
de = head(data1,365)
colnames(de) <- c("open","high","low","close","volume","adj.")
overnightRtn <- as.data.frame(as.numeric(de[2:nrow(de),"open"])/as.numeric(de[1:(nrow(de)-1),"close"])) - 1
r = as.data.frame(overnightRtn[overnightRtn>.05, ])
x = NROW(r)
results= rbind(x)
}
colnames(results) = c("overnightRtn")
rownames(results) = sym
View(results)
错误讯息:
Error in `rownames<-`(`*tmp*`, value = c("AAPL", "W")) :
length of 'dimnames' [1] not equal to array extent
View(results)
的DF是7,我的excel文件中的第一个股票代码的(正确)值 - 我的意思是#的值&gt; .05
答案 0 :(得分:1)
您可以使用config.assets.paths << Rails.root.join("app", "assets", "plugins", "myPlugin")
选择列中的上一个值,并使用lag
检查有多少值大于0.05。这是完整的代码
sum(overnightRtn > 0.05)