r 从 mysql 数据库循环中获取数据

r fetch data from mysql db loop

我使用 r:

从我的 mysql 数据库中成功获取了数据
library(RMySQL)
mydb = dbConnect(MySQL(), user='user', password='pass', dbname='fib', host='myhost')
rs = dbSendQuery(mydb, 'SELECT distinct(DATE(date)) as date, open,close FROM stocksng WHERE symbol = "FIB7F";')
data <- fetch(rs, n=-1)
dbHasCompleted(rs)

所以现在我有一个对象列表:

> print (typeof(data))
[1] "list"

每个元素都是一个元组(?),如日期(图表)、打开(长)、关闭(长)

好的,现在我的问题是:我想获得收盘价 (x) 和第二天开盘价 (x+1) 之间的百分比差异向量,直到结束,但我无法正确访问该项目!

示例:((开仓)/收仓*100)-100)

我试试:

for (item in data){
    print (item[2])
}

以及所有可能的组合,例如:

for (item in data){
  print (item[][2])
}

但无法访问正确的元素:!有人可以帮忙吗?

您的 MySQL 查询中的问题比这更大,因为您没有指定 ORDER BY 子句。考虑使用以下查询:

SELECT DISTINCT
    DATE(date) AS date,
    open,
    close
FROM stocksng
WHERE
    symbol = "FIB7F"
ORDER BY
    date

这里我们按日期对结果集进行排序,这样就可以说出当前和下一次开盘或收盘。现在有了适当的查询,如果您想获得当前收盘价和第二天开盘价之间的百分位数差异,您可以尝试:

require(dplyr)
(lead(open, 1) / close*100) - 100

或使用基数 R:

(open[2:(length(open)+1)] / close*100) - 100

naif 版本:

for (row in 1:nrow(data)){
  date <- unname (data[row,"date"])
  open <- unname (data[row+1,"open"])
  close <- unname (data[row,"close"])
  var <- abs((close/open*100)-100)
  print (var)
}