2014-04-14 2 views
2

저는 R이 열려있는 한 사용할 수 있기 때문에 전 세계에 할당하려고하는 많은 목록을 가지고 있습니다. 불행히도 브라우저 모드와 일반 콘솔이 다르기 때문에 코드에서 발생하는 동작을 테스트 할 수 없습니다.브라우저에 << (글로벌 할당)가있는 목록에 목록을 추가합니다.

여기에 내가이 예

browsefunct<-function() 
{ 
    browser() 
    browser() 
} 

browsefunct() 

Browse[1]> smallList <- list(1) 
Browse[1]> smallList 
[[1]] 
[1] 1 
Browse[1]> smallList <<- c(smallList,list(smallList)) #does nothing? 
Browse[1]> smallList 
[[1]] 
[1] 1 
Browse[1]> smallList <- c(smallList,list(smallList)) 
Browse[1]> smallList 
[[1]] 
[1] 1 

[[2]] 
[[2]][[1]] 
[1] 1 

에서 브라우저 모드로 전환하는 데 사용할 아직

> smallList<-list(1) 
> smallList <<- c(smallList,list(smallList)) #now works 
> smallList 
[[1]] 
[1] 1 

[[2]] 
[[2]][[1]] 
[1] 1 

이는 R 자체의 버그가 프로그램입니까?

+0

버그를 제안하기 전에, 특히'<< -'같은 것들을 사용하는 경우, 실제로 무엇을하고 있는지 알지 못한다면 사용하지 말아야 할 경고가 많이 있기 때문에 R- 매뉴얼을 읽는 시간을 가져야합니다 와 멋진 R - inferno (Patrick Burns의) –

+0

나는 R inferno를 읽었습니다. R에 파일을 한 번만로드하려면 전역 할당을 사용하려고합니다. 여기서 조정하는 변수는 내가로드하는 파일을 추적하는 것입니다. – hedgedandlevered

+0

글쎄,'.Rdata' 파일을 적절하게 유지 관리하거나 시작시로드하는 내용에 의존하기 때문에 "한 번만"로드 할 수 있습니다 . –

답변

4

browser()의 환경은 글로벌 환경이 아니며 대신 browserfunc()의 로컬 환경입니다. 그래서 당신이하고있는 일은 지역 변수를 생성 한 다음 전역 변수에 무언가를 할당 한 다음 지역 변수를보고 왜 변경되지 않았는지 궁금해하는 것입니다.

할당 후 전역 변수의 값을 보려면 get('smallList', env = .GlobalEnv)을 수행하십시오.

+0

감사합니다. << - 글로벌 변수와 로컬 변수를 모두 할당하지 않았습니다. – hedgedandlevered

관련 문제