对我而言,这应该很简单,但......
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'
我想将数据框分解为其列并且有一组新数据较小的帧,每列一个
我无法弄清楚我哪里出错了。总是非常感谢帮助。
答案 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))