0

在我看来,这应该很简单,但是......

     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'

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

我不知道我哪里出错了。帮助总是非常感谢。

4

2 回答 2

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]])
}
于 2013-06-04T19:19:07.430 回答
1

也许是这样的?我认为您只需要在 lappy 调用中定义一个匿名函数

 a <- 5
 b <- 1:a
 c <- as.data.frame(matrix(rnorm(30, 1), ncol = 5))
 out <- lapply(c, function(i) data.frame(i))
于 2013-06-04T19:56:53.733 回答