2011-11-16 6 views
0

저는 79 개의 열을 가져 와서 각 열에 대해 고유 한 변수를 만들려고합니다. 나는 수동 부분 집합으로 변수를 만들 수 있습니다 /이 그것을 할 수있는 더 빠른 방법이 알고 있다면 궁금열을 변수로 구분하기

v1 <- x[1] 
    v2 <- x[2] 
    etc. 

. 나는 정말로 잘 모르겠다. 는 지금은이 : 항상 도움을

test <- matrix(rep(1,79), nrow = 1, ncol = 79) 
    c2v <- function(test){ 
     for (i in c(1:79){ 
      v[i] <- test[i] 
     } 
     return(v[i]) 
    } 
    c2v(test) 

감사합니다!

+0

이 질문은 심각한 문제가 있습니다. 무의미한 코드를 작성하는 오타를 제외하고, 성취하고자하는 것과 그 이유에 대한보다 완전한 설명을 제공해야합니다. – joran

답변

2

무엇과 같이 약 :

test <- matrix(rep(1,79), nrow = 1, ncol = 79) 

for (i in 1:ncol(test)) { 
    temp <- (paste(c("v",i), collapse="")) 
    assign(temp,test[i]) 
} 

나는 루프를 제거하도록 재구성 될 수있는 확신 해요,하지만이 작동합니다.

미래의 내 과거의 실수 편집 : 다음과 같은

뭔가 더 적절한 비 루프 해결책이 될 수 있습니다.

list2env(as.data.frame(test),envir=.GlobalEnv) 

아직 아마도 개별 벡터에 헤어지는 것보다 data.frame 또는 list와 함께 작동하는 더 나은 방법입니다.

+0

벡터화 벡터화 벡터화. R의 루프는 매우 비효율적입니다. – Maiasaura

+0

@Maiasaura - 저도 알고 있어요.하지만 저의 삶은이 단계에서 루프를 제거하는 방법을 생각할 수 없습니다. 나는 그것에 대해 연구 중이다. – thelatemail

+2

for 루프를 피하는 것에 대한 걱정은 다른 것과 마찬가지로 과장 될 수 있습니다. 운동으로 즐겁지 만,이 경우에는 79 열만 반복하는 것에 대해 신경 쓰지 않아도됩니다. – joran

0
library(reshape) 
    new_data= melt(data, id.vars=1) 
    # Assuming the first column is the ID variable. 
    #If you have more than one, you can specify a range like 1:4 
관련 문제