我有一个具有以下结构的数据框:
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
,但没有尝试使用它。
有什么想法吗?
答案 0 :(得分:9)
使用lapply
:
lapply(all.inc, function(x) split(x, x$pat))
答案 1 :(得分:7)
如果您想一次性拆分数据框,可以使用
split(df, interaction(df$pat,df$inc))
但是,返回的值将是单个数据框列表,这与通过拆分列表元素所获得的略有不同。