【发布时间】:2017-04-20 01:03:29
【问题描述】:
我有这个股票示例列表:
stock.list = c("AMZN","GOOGL","AAPL","FB","TSLA")
我有以下功能:
fnct<-function(x){
require(quantmod)
ticker <- getSymbols(x,src="google", auto.assign=FALSE)
#number of rows
n<-nrow(ticker)
# last day's close
lastvalue <- as.numeric((ticker[n,4]))
# previous day's close
prevvalue <- as.numeric((ticker[n-1,4]))
# price change
prchange <- lastvalue - prevvalue
res<-(
paste0(prchange)
)
return(res)
}
函数的输出是一个数字,表示最后一天和前一天的收盘价之间的差值(本质上,输出中的正数表示股价上涨,负数表示股价上涨下)
例如,今天对AMZN 使用此函数会返回一个正数:
> fnct('AMZN')
[1] "17.3200000000001"
我想将该函数应用于股票列表,以便它只显示那些有积极变化的股票名称 (>0),并且如果可能的话,在它们旁边显示变化的数值(基本上,消除股票有负面变化)
所以理想的输出应该是这样的:
AMZN 17.3200000000001
GOOGL 14.95
...and so on
这是我到目前为止想出的,但它不起作用
for(x in stock.list) {
paste0(x,fnct(x))
}
我知道这并不能消除负面变化的股票,但这是我能做到的。即使这似乎不起作用。
理想情况下,它应该足够健壮,可以跳过NA(例如,列表中的股票名称拼写错误,或者列表中特定股票的数据缺失)
有什么建议吗?提前致谢。
【问题讨论】: