将列分隔为变量

时间:2011-11-16 23:46:56

标签: r

我希望获取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)

一如既往地感谢您的帮助!

乔恩

2 个答案:

答案 0 :(得分: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.framelist而不是分解单个向量可能仍然是更好的做法。

答案 1 :(得分: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