2014-05-21 2 views
0

assign() 명령에 관한 비슷한 질문을 이미 읽었습니다. 그러나 그것은 나를 위해 일하지 않는다.동적 변수 이름 R

masums <- function(var) 
{ 
    lags <- var$p     # number of lags in VAR 
    eqn <- length(var$varresult) # number of equations in VAR 
    dep <- names(var$varresult)  # names of dependent variables 

    for(i in 1:eqn) # einzelne Koeffizientenmatrizen berechnen 
    { 
     d <- dep[i] 
     x <- paste("var$varresult$",d,"$coefficients",sep="") 
     y <- as.matrix(GET THE VALUE OF "x" e.g. var$varresult$d$coefficients) # d="gap" for i=1 

    } 
    return(y) 
} 

예 : 다음은 내 코드입니다 전 = 1 d는 값 "차이"를했을 경우, 그러므로 내가 var에 $ varresult의 $ 갭 $ 계수의 값을합니다.

var $ varresult는 "lm"클래스의 요소로 구성됩니다. 어쩌면 해결책은 간단하며 나는 그것을 보도록 강조 할 것입니다. 누군가 도움을 줄 수 있기를 바랍니다.

편집 : 작은 예를 들어 데이터 세트에 대한 :

library(vars) 
y <- c(100*rnorm(100)) 
x <- seq(1,100,1) 

vardata <- cbind(x,y) 
var1 <- VAR(vardata,p=4,type="const") 
var1$varresult$x$coefficients 

마틴

+0

당신은 "작동하지 않습니다"무엇을 지정해야합니다 (var$varresult을 가정하는 것은 목록입니다). 나는 몇 가지 잠재적 인 문제를 여기에서 보았다 - (1)'x'로 무엇을하고 있니? (2) 루프의 마지막 반복에서'y'를 반환하는 것뿐입니다. 그러나 실제로 시도한 내용과 현재 수행중인 작업의 어떤 부분이 작동하지 않는지 설명하지 않았습니다. – Thomas

+2

나는 당신이 한 일을 성취 할 수있는 더 좋은 방법이 있다는 것을 느낍니다. 작고 재현 할 수있는 예제와 원하는 출력을 제공 할 수 있습니까? –

+0

나는 R을 매일 6 년 동안 사용해 왔지만'assign '을 사용할 필요가 없다는 것을 한번도 발견하지 못했습니다. 아마 R과 비슷한 일을하는 방법이있을 것입니다. 당신의 진짜 문제는 무엇입니까? – Andrie

답변

1

paste 문자열의 중첩 된 변수 액세스를 구성 할 수는 완전히 잘못된 접근입니다.

당신이없는 것은 (당신이 목록에서 하나의 값, 또는 data.frame의 열을 원하는 여부에 따라, 또는 x$[['y']]) x$yx$['y']로 기록 될 수 있다는 사실이며, 여기 'y'입니다 문자열. 그래서 당신이 쓸 수 있습니다 :

y <- as.matrix(var$varresult[[d]]$coefficients)