0

我有下面的代码从类 term_strc_nss 中提取一个命名的数字。它可以很好地提取 beta 向量的值并将它们传递给下一个函数。2012-12-31但是,定义类中插槽的交易日期会发生变化。所以,我需要将交易日期作为变量传递到代码中。

BetaVector <<- unname(term.structure$opt_result$`2012-12-31`$par[c("beta0",
"beta1","beta2", "tau1")]) 

下面的代码使用粘贴,但是当我运行该函数时,我得到的错误似乎与“beta0”、“beta1”、“beta2”和“tau1”周围的引号有关。我尝试将 " 替换为 ' 我可以运行代码,但由于 beta 向量只是一串名称,因此未传递该值。

BetaVector <<- paste("unname(term.structure$opt_result$`",tradedate,"`$par[c("beta0",
"beta1", "beta2", "tau1")])")

我想我可以创建一种方法来提取 Beta 系数,但在创建该方法时我仍然会面临同样的问题。有没有更好的方法从类中提取命名数字?

这是 term.structure 的输出。term.structure 是一个对象 termstrc_nss 并且是一个 S3 类 引用它的正确方法是什么?

structure(list(`2012-12-31` = structure(list(par = structure(c(3.41273726187976, 
-2.63342593294169, -5.34244663887461, 2.13363495349724), .Names = c("beta0", 
"beta1", "beta2", "tau1")), value = 0.0088680383803467, counts = structure(c(15, 
 10), .Names = c("function", "gradient")), convergence = 0L, message = NULL, 
outer.iterations = 2L, barrier.value = -0.000409627261066452), .Names = c("par", 
"value", "counts", "convergence", "message", "outer.iterations", 
"barrier.value"))), .Names = "2012-12-31")
4

1 回答 1

4

听起来你想做某种 eval-parse 技术。这几乎总是一个坏主意,因为它使您的代码几乎无法调试。请改用方括号索引。

trade_date <- "2012-12-31"
BetaVector <<- unname(
  term.structure$opt_result[[trade_date]]$par[c("beta0","beta1","beta2", "tau1")]
)
于 2013-10-20T20:49:44.900 回答