2016-05-02 8 views
5

で行われますかRCの両方にレキシカルスコープがあります。だから、次のコードは動作しませんCに、グローバルスコープが空であることを仮定:スコープはどのようにR

int aux(int arg) { 
    if (arg > 0) { 
     int result = 1; 
    } else { 
     int result = 0; 
    } 
    return result; 
} 

Rにある間に、次のコード:

aux <- function(arg) { 
    if (arg > 0) { 
     result = 1 
    } else { 
     result = 0 
    } 
    return(result) 
} 

作品正しく。誰かがRCの間のスコープの違いが何であるか教えてください。 R、if条件を囲む環境で評価された後の式で

+1

[この投稿](この記事では(http://stackoverflow.com))/questions/10904124/global-and-local-variables-in-r)が役に立ちます。 – LPs

答えて

3

if (TRUE) environment() 
#<environment: R_GlobalEnv> 

(驚くべきことに、私はこれについてのドキュメントを見つけることができませんでした。)


、変更することができますそれを使用することによってlocal

aux <- function(arg) { 
    if (arg > 0) { 
    local({result <- 1}) 
    } else { 
    local({result <- 0}) 
    } 
    return(result) 
} 

aux(1) 
#Error in aux(1) : object 'result' not found