2013-10-20 2 views
0

아래 코드를 사용하여 term_strc_nss 클래스에서 명명 된 번호를 추출합니다. 그것은 잘 작동 베타 벡터에 대한 값을 추출하고 다음 함수로 그들을 전달합니다. 그러나 거래 날짜는 2012-12-31이고 클래스 변경 슬롯을 정의합니다. 따라서, 거래일을 변수로 변수에 전달해야합니다.R에서 붙여 넣기를 사용하여 명령 연결

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

코드는 아래에 붙여 넣기를 사용하지만 기능을 실행할 때 나는 "beta0", "베타", "베타"와 "tau1"주위에 따옴표 관련이있는 것으로 보이는 오류를 얻을. 나는 "나는 코드를 실행할 수 있지만 그 값이 베타 벡터 이름의 단지 문자열이기 때문에 통과되지 않았다 '로 대체했습니다.

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

내가 베타 계수를 추출하는 방법을 만들 수 있습니다 생각하지만, 나는 여전히 메소드를 생성 할 때 똑같은 문제에 직면하게 될 것이다. 클래스에서 명명 된 숫자를 추출하는 더 좋은 방법이 있을까?

여기 term.structure의 dput이있다 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

'dput (term.structure $ opt_result)'을 게시하고 S4 구조를 언급하지 않을 때는 '슬롯'이라는 용어를 사용하지 마십시오. 이 질문에 모호한 부분이 많이 있습니다. 텍스트 설명과 질문과 일치하는 코드와 데이터가 없으면 가까운 득표를 얻을 위험이 있습니다. –

+0

이 질문에 대한 답은 인용 부호에서 벗어나는 것 같습니다 : – Thomas

답변

4

당신은 일종의 eval-parse 기술을하고 싶다. 이것은 거의 항상 나쁜 생각입니다. 왜냐하면 코드를 디버깅하는 것이 거의 불가능하기 때문입니다. 대신 대괄호 색인을 사용하십시오.

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

감사합니다. Richie, 저는 term.structure $ opt_result [1] $ par [c ("beta0", "beta1", "beta2" , "tau1")] 그게 효과가있다. 전체 수업에서 내가 할 수있을 것 같아. 나는 올바른 결과물을 잡아낼 수있는 방법을 생각해야 할 것이다. 그러나 이것이 나를 앞당기 게한다. –

관련 문제