R:将列表的元素拆分为子列表

时间:2012-09-14 08:47:11

标签: r list

我有一个具有以下结构的数据框:

pat <- c(rep(1,50), rep(2,50), rep(3,50))
inc <- rep(c(rep(1,5), rep(2,5), rep(3,5), rep(4,5), rep(5,5),
             rep(6,5), rep(7,5), rep(8,5), rep(9,5), rep(10,5)), 3)
df <- data.frame(cbind(pat, inc))

df被拆分为元素列表:

all.inc = split(df, inc)

现在我想将此列表的每个元素拆分为子列表。类似的东西:

all.pat = split(all.inc, pat)

这显然不起作用。我已经尝试了plyr函数和lapply,但没有尝试使用它。

有什么想法吗?

2 个答案:

答案 0 :(得分:9)

使用lapply

lapply(all.inc, function(x) split(x, x$pat))

答案 1 :(得分:7)

如果您想一次性拆分数据框,可以使用

split(df, interaction(df$pat,df$inc))

但是,返回的值将是单个数据框列表,这与通过拆分列表元素所获得的略有不同。