在R中使用paste来连接命令

时间:2013-10-20 20:38:52

标签: r

我有以下代码从类term_strc_nss中提取命名数字。它可以很好地提取β矢量的值并将它们传递给下一个函数。但是,交易日期2012-12-31并定义班级中的广告位更改。所以,我需要将交易日期作为变量传递给代码。

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

下面的代码使用粘贴,但是当我运行该函数时,我得到的错误似乎与“beta0”,“beta1”,“beta2”和“tau1”周围的引号相关。我尝试更换“with”我可以运行代码,但之后没有传递值,因为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")

1 个答案:

答案 0 :(得分:4)

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

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