我想从数据框创建一组数据帧

时间:2013-06-04 19:10:08

标签: r

对我而言,这应该很简单,但......

     a <- 5
     b <- 1:a
     c <- matrix(rnorm(30, 1), ncol = 5)
     out <- lapply(c,c[,i])

    Error in c[, i] : invalid subscript type 'list'

我想将数据框分解为其列并且有一组新数据较小的帧,每列一个

我无法弄清楚我哪里出错了。总是非常感谢帮助。

2 个答案:

答案 0 :(得分:2)

因此,您希望将数据帧分成多个数据帧,每列一个。你确定你要这么做吗?有很多问题,人们想要知道如何循环一堆对象,当他们更好地将所有这些对象包装到列表或类似的数据结构中时。请注意,数据框基本上只是列的列表。

有了这个......

d <- as.data.frame(matrix(rnorm(30), ncol=5))
for(i in seq_len(ncol(d))) {
    name <- names(d)[i]
    assign(name, d[[i]])
}

答案 1 :(得分:1)

也许是这样的?我想你只需要在你的lappy call中定义一个匿名函数

 a <- 5
 b <- 1:a
 c <- as.data.frame(matrix(rnorm(30, 1), ncol = 5))
 out <- lapply(c, function(i) data.frame(i))