2010-03-26 9 views
13

다음과 같이 당신이 saved.file.rda로 저장된 객체 foo이 상상 R에로드 saved.file.rda. 그 이름을 결정하는 방법이 있습니까? 그러나결정 이름은

bar <- load('saved.file.rda') 
eval(parse(text=bar)) # this will pull up the object that was in saved.file.rda 

,이 일을 더 나은 방법이있다 :

귀하는 좀 어설픈 것 같다 다음과 같은 방법을 할 수 있습니까? 당신은 "단정"하고 물건과 글로벌 작업 공간을 오염시키지하려면

bar <- get(load('saved.file.rda')) 

:

bar <- load('saved.file.rda') 
the.object <- get(bar) 

하거나 : 대한 saved.file.rda에 저장된 하나의 개체 만이 가정

+0

을 그냥 명확히 : 그럼 당신은 당신이 원하는 것을 얻을 getls를 사용할 수 있습니다 당신이 개체의 이름을 원하는 (' "foo는"') 및/또는 객체의 값을 (''A '')? – Marek

+0

마렉, 나는 나중에 그것을 참조 할 수 있도록 개체의 이름으로 interesetd입니다. – andrewj

+0

오브젝트의 이름이'bar' 변수에 있습니다. 그래서 당신은 그것을 인쇄하고 이름을 볼 수 있습니다. – Marek

답변

18

당신은 (그리고 이름을 잊어 버렸습니다.) 당신은 당신의 객체를 환경에로드 할 수 있고 당신은 그 환경을 get으로 지정할 수 있습니다.

은 미정 : 잘

temp.space <- new.env() 
bar <- load('saved.file.rda', temp.space) 
the.object <- get(bar, temp.space) 
rm(temp.space) 
... 
+0

환경에 데이터로드가 다릅니다. 내 대답을 확인해. 솔루션은 데이터를 글로벌 작업 공간에로드합니다. 'ls()'을 수행하십시오. – Marek

+0

아 .. 나는'temp.space'를'load'의 두번째 인자로 넣을 생각이었습니다. 좋은 캐치 (그리고 수정하기 위해) –

+0

이것을 고맙다, 나는 그것을 위해 잠시 찾고 있었다. –

3

, 내가 (즉, R 이진 파일 방금로드에있는 개체의 이름을 찾을 수) 그렇게 할 필요성을 제거하는 기능을 알고 - 즉 , 대신 '로드'의 R 바이너리 파일을로드하기 위해이 기술을 사용할 수 있습니다

file_path = "/User/dy/my_R_data/a_data_set.RData" 
attach(file_path, pos=2, name=choose_a_name, warn.conflict=T) 
  • 'warn.conflicts = T 것은'기본 옵션

  • 012입니다
  • 'pos = 2'도 기본값입니다. "2" 는 귀하의 검색에서의 위치를 ​​나타냅니다 경로. 예를 들어, 위치 1은 ".GlobalEnv."입니다. 검색 경로 전체 배열 을 얻으려면 검색()을 사용하십시오. 그래서 당신은 당신이 데이터를로드 할 수 있습니다 당신이 ?load에서 읽을 수 있듯이 객체를

5

을 제거하기 위해 검색 (에 의해 용) [2]

  • 사용 '분리'를 새로운 객체를 검색 경로에 액세스 할 지정된 환경에.

    tmp_env <- new.env() 
    load('saved.file.rda', tmp_env) 
    get(ls(tmp_env), envir=tmp_env) # it returns only first object in environment 
    # [1] "a"