2013-01-09 1 views
0

일부 기본 계산을 자동화하는 함수를 만들려고합니다. 그러나 그것은 함수에 내장 된 코드가 외부에있을 때 완벽하게 작동하더라도 최종 mat 객체를 정의하지 않는 것으로 보입니다. 분명히 몇 가지 기본 오류를 수행하고 있지만 무엇이 잘못되었는지 알 수 없습니다.R의 기본 사용자 지정 함수가 내부 개체를 정의하지 않습니다.

코드는 다음과 같습니다 어떤 도움

my_f = function(covs, B, k) { 

    ### empty matrix 

    coeff <- paste("b_", covs, sep="") 
    se <- paste("se_", covs, sep="") 
    mat <- matrix(nrow=B, ncol=2+2*k, dimnames=list(c(), c("sim","N",coeff,se))) 
    mat[,"sim"] <- seq(1:B) 

} 

my_f(covs=list("x1", "x2"), B=50, k=2) 

감사합니다!

+0

어떤 방식으로 작동하지 않습니까? 그것이 당신에게주는 것과는 반대로 예상되는 결과는 무엇입니까? –

+2

@joran : 마지막 줄이 함수를 방해 할 것이지만 정확히'seq (1 : B)'를 반환 할 것이므로'[<-'가 반환 할 것이기 때문입니다. –

+1

@Dwin, 네,하지만 my_f (...)를 지정하지 않으면 반환하지 않는 것처럼 보입니다. 'my_f (covs = list ("x1", "x2"), B = 50, k = 2)'와'x_- , k = 2); x' – mnel

답변

3

반환하려는 항목이 명확하지 않지만 기능 끝에는 return(mat) 줄을 잊어 버린 것 같습니다.

현재 myf이 정의되어 있으므로 마지막으로 평가 한 벡터 만 반환합니다 (m[, "sim"], 이는 나머지 행렬을 잊어 버림).

또한 변수에 my_f의 결과를 할당해야합니다 (이 될 수 있지만, 또한 mat 이름, 수 가 없습니다).

mat <- my_f(covs=list("x1", "x2"), B=50, k=2) 
+0

+1 너무 빨리 !!! – mnel

+0

감사합니다! 'mat' 객체를 R 콘솔에 표시하지 않고 정의하는 방법을 설명 할 수 있습니까? 나중에 호출하고 싶습니다. – Stezzo

+0

'mat'이 함수 내에서 정의되면 함수의 * scope * 내에 만 존재합니다. 즉, 함수가 끝나면'mat'은'mat'을 반환하지 않고 함수의 반환 값이 새로운 변수 (mat이라고도 함)에 할당됩니다. –

관련 문제