2013-06-04 221 views
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' 

我想打破数据帧到其列,并有一组的新数据较小的框架,每列一个

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

回答

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)) 
+0

完美!谢谢你,诺亚。 –

+0

lapply(c,data.frame) – user20650

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]]) 
} 
+0

好的谢谢你的评论,我会认为,仔细地,因为我认为你是对的。代码的作品,但我仍然最终有一个矩阵,有五列。我没有解释我需要什么,我猜。 –

+0

修复了一些故障。此外,这实际上将列保存为向量,而不是像这样的数据帧。 –