我正在尝试创建在从雅虎获取符号后提供历史波动的函数.但是,当我将输出传递给波动率函数时,它不喜欢它; Get变量被赋予一个带引号的向量,例如"SPY",但波动率函数只需要没有引号(SPY没有"SPY").我尝试使用noquote()取消引号,现在出现以下错误:
log(x)中的错误:数学函数的非数字参数
我的代码
require(quantmod)
vClose = function(X){
Get <- getSymbols(X, from="2000-01-01", src="yahoo")
Set <- noquote(Get)
volatility(Set, calc="close")
}
Run Code Online (Sandbox Code Playgroud)
任何帮助都会很棒.
我想进一步利用以下附加约束来约束下面的系统,该约束使用了绝对值运算符:
abs(x1)+abs(x2)+abs(x3) <= 10
Run Code Online (Sandbox Code Playgroud)
有可行的方法在R中实现这些附加的绝对值约束吗?
方程组:
maximize: x1 + 9x2 + x3;
subject to:
x1 + 2x2 + 3x3 <= 9
3x1 + 2x2 + 2x3 <= 15
Run Code Online (Sandbox Code Playgroud)
R代码:
require(lpSolve)
# objective function, constants, constraints
obj = c(1,9,1)
con = matrix(c(1,2,3,3,2,2), nrow=2, byrow=TRUE)
rel = c("<=", "<=")
rhs = c(9,15)
Run Code Online (Sandbox Code Playgroud)
解:
my.lp = lp("max", obj, con, rel, rhs)
my.lp$objval
my.lp$solution
Run Code Online (Sandbox Code Playgroud)
显然,这是一个简单的示例,用于说明我在线搜索后遇到的问题。这似乎存在一种方法lp_solve本身,就证明这里的在lp_solve在线帮助指导。但是,如果可能的话,我希望将问题保留在R中。
我有以下数据框,
ESIVmatrix <- structure(c(1000, 1050, 1100, 1150, 1200, 1250, 0.596044633067339,
0.568874415146119, 0.548817842630467, 0.528509198265979, 0.505102479305053,
0.481863859161313, 0.419829588814411, 0.407383853187116, 0.395662104352744,
0.383710399971056, 0.371402827197033, 0.358943850461579, 0.390669388091009,
0.380556007177402, 0.369862565005378, 0.358004628064117, 0.347655431619544,
0.33661166544938, 0.474661141683071, 0.457000912081753, 0.444006689151462,
0.429723103151982, 0.415839741238857, 0.400624512403368), .Dim = c(6L,
5L), .Dimnames = list(NULL, c("Strikes", "20150417", "20150918",
"20151218", "20150619")))
Run Code Online (Sandbox Code Playgroud)
但是,列的顺序不是按日期顺序排列的.我希望它们符合日期顺序(20150417,20150619,20150918,20151218).
我已经尝试使用order(),并arrange()无济于事.任何帮助非常感谢.