2014-01-16 2 views
0

내가하려고하는 것이 가능할 지 모르겠습니다! 나는 값의 행렬 (Var_sim)을 가지고 있으며 그것을 ff 객체로 변환한다. 이 개체의 이름은 "붙여 넣기"로 만들어집니다. 내가 FF 객체와 변수 Mat_TEMP_4085_1이 여기함수에서 생성 된 이름의 변수를 사용하십시오.

Variables[k] = TEMP 
Cell_number[i] = 4095 
selected_domains = 1 

assign(paste("Mat_",Variables[k],"_",Cell_number[i],"_",selected_domains[j],sep=""),as.ff(Var_sim)) 

: 지금은 함수 ffload에서이 개체를 사용하려면,이 내 코드입니다. 그 루프를 사용하여 다양한 이름 (다른 cell_number)을 가진 다양한 ff 객체를 갖습니다. 함수에서 Mat_TEMP_4085_1 (및 기타)를 사용해야하지만 이름을 쓸 수는 없습니다.

Error in ffsave(as.name(paste("Mat_", Variables[k], "_", Cell_number[i], : 
objet ‘as.name(paste("Mat_", Variables[k], "_", Cell_number[i], "_",  selected_domains[j], sep = ""))’ not found 

그것은 변수를 인식하지 않습니다

나는 다음과 같은 오류가 있습니다. 어떻게해야합니까?

+0

이 'ff'자료는 무엇인가요? 패키지 에서요? 또한 이름을 만들고 assign을 사용하는 것은 거의 항상 잘못된 것이며 문제의 원인 일 가능성이 큽니다. 사물의 이름에 인덱스를 넣으 려하지 않고 _lists_를 만듭니다. – Spacedman

+0

예 ff는 패키지이며 대용량 데이터로 작업하기 때문에이 패키지를 사용합니다. 이 함수는 각 ff 파일을 폴더에 쓴 다음 그 파일을 다시로드하고 하나씩 사용합니다. 문제는 ff 객체를로드 할 때 변수 이름이 ffsave에 저장된 객체의 이름입니다. 만약 내가 항상 같은 이름을 넣었고 여러 개의 ff 객체를로드하고 싶다면, 변수는 같은 이름이 될 것이기 때문에 overwrited 될 것입니다. – Douie

+0

'envir' 인수를 사용하여 각 환경을 다른 환경으로로드하고 그 중에서 하나의 목록을 만들 수 있습니다. – Spacedman

답변

0

오른쪽이 as.name 인 것처럼 보이지 않습니다. 변수의 문자열 이름에서 변수 값을 얻으려면 단순히 as.character을 제거하거나 사용하십시오. get; @Spacedman 가능한 경우 이름 목록을 선호해야합니다.

tt = "rbind" 
print(do.call(tt,list(LETTERS))) # works 
print(do.call(as.name(tt),list(LETTERS))) # does not work 
print(do.call(as.character(as.name(tt)),list(LETTERS))) # works 
print(do.call(get("tt"),list(LETTERS))) # works 
+0

답변 해 주셔서 감사합니다. 내가 시도한 것은 무엇이든 여전히 동일한 오류가 발생합니다 (get, as.character (as.name()) 또는 juste paste()). 방금 코드를 인쇄 할 때 원하는 이름을 제공하지만 함수에서 사용할 필요가있을 때 그것을 인식하지 못합니다 – Douie

+0

ffsave를 보았습니다. 이름 목록을 지정해야하는 것처럼 보입니다 :'require (ff); n ≤ 8e3;vmode = "정수", 길이 = n, 파일 이름 = "~/테스트/ABC.ff"할당 (붙여 넣기 (문자 [1 : 3], 축소 = ""), ff (샘플 (n,), ffsave (list = paste (LETTERS [1 : 3], collapse = ""), file = "~/test/another_ABC") ' –

+0

감사합니다. 나는 "목록"이 필요했다. 이름은 사용자가 함수에 넣은 인수에 의해 설정됩니다. 다른 매개 변수 조합으로 거의 500 000 개의 이름을 가질 수 있습니다 - 이름 목록을 사용하는 것이 더 복잡하다고 생각합니다. – Douie

관련 문제