2010-05-25 10 views
2

R에서 "assign ('x', v)"은 이름이 'x'인 객체를 v로 설정합니다. 'x'를 변수 x에 텍스트 함수를 적용한 결과. 그런 다음 "배당"은 그 가치를 보여줍니다.R의 값의 names() 속성에 할당하는 방법 R

불행히도 "assign (paste ('names (', 'x', ')', sep = ''), v)는 실패합니다. 그래서 'x'가 변수 x라면, 그 값을 설정할 수는 있지만 그 원소의 이름을 줄 수는 없습니다.

이 문제를 해결할 수 있습니까? 구문 분석 트릭이 어쩌면? 감사.

+0

x의 예를 제공해 주시겠습니까? – Shane

+3

''x ''에 할당하기 전에 'v'에 이름을 부여 할 수 없습니까? – Aniko

답변

3

이 시도 : 여러 이름이있는 대신하는 경우

assign(paste(names(x),collapse="."), v) 

사용 collapse.

> v <- 1:10 
> names(v) <- letters[1:10] 
> v 
a b c d e f g h i j 
1 2 3 4 5 6 7 8 9 10 
> assign(paste(names(v), collapse=""), v) 
> abcdefghij 
a b c d e f g h i j 
1 2 3 4 5 6 7 8 9 10 
+0

나는 Tony가 원했던 것이라고 생각하지 않습니다. 그는 프로그램에서 생성 된 변수의 이름을 지정하려고합니다. – Aniko

3

질문 할 때 assign 이름이 필요하지 않습니다. x이 존재하면 names(x) <- v입니다. 이것이 올바른 방법입니다.

당신의 변수 이름 (즉 동적으로 생성 된) 다음 substitute

nm <- "xxx" # name of your variable 
v <- 1:3 # value 
assign(nm,v) # assign value to variable 

w <- c("a","b","c") # names of variable 
eval(substitute(names(x)<-w, list(x=as.symbol(nm)))) 
# Result is 
str(xxx) 
# Named int [1:3] 1 2 3 
# - attr(*, "names")= chr [1:3] "a" "b" "c" 

를 사용할 수 있습니다하지만 당신은 트릭 이런 종류의 작업을 수행해야하는 경우 코드에 문제가 알 수없는 경우.

2

마렉의 대답은 작동하지만 애니코의 질문은 간단한 대답입니다.

nm <- "xxx"; v<- 1:3; names(v) <- c("a","b","c"); assign(nm,v) 

이것은 Aniko의 대답입니다. 그녀는 신용을 얻어야합니다.

이 사례는> 1 클래스의 쿼리에 대해 각각 다른 varname이 있고 각 클래스에는> 1 sql 쿼리가 포함됩니다. 예를 들어 "q1", "q2", "q3"과 같이 세 개의 명명 된 쿼리가있는 "config_query"라는 쿼리 클래스 이름이 있습니다. 그리고 쿼리 클래스 이름 추가. 나는 쿼리 접두사 (예 : "config"를 "config_query"에 대한)와 같은 쿼리 클래스 이름을 목록으로 사용하고 쿼리 내용을 가져 와서 쿼리를 실행하고 결과 클래스에 결과 데이터 프레임을 나열하는 루프를 만들고 싶습니다. "config_result"와 같이 "config_result"의 각 결과는 "config_query"의 쿼리와 동일한 이름을 갖습니다.

다른 말로하면, 루트 접두사와 초기 쿼리가 주어지면 결과 클래스 varnames와 해당 이름 매핑을 무료로 사용하고 싶습니다. assign()을 사용하면 결과 클래스 varnames에 할당됩니다. 나는 이름 매핑을하는 방법에 집착했다. 감사!

+0

목록이 필요한 것 같습니다. 'assign = list (config = list (query = list (q1, q2, ...), results = ...)'와 같이.'assign'을 사용하면 항상 이름을 변경하고자 할 때 문제가 발생합니다 결과의 일부 열은 – Marek

0

변수 이름이 다른 변수 (variable_name)에 문자열로 저장되어있는 경우 다음을 수행합니다.

temp <- get(variable_name) 

names(temp)<- array_of_names 

assign(variable_name,temp)