【发布时间】:2016-08-29 06:38:29
【问题描述】:
我有一个3路频率表,我想将它们组合成一个列表,通常我写listOfTable <- list(table[,,1],table[,,2],table[,,3],table[,,4],table[,,5]),有时我的表真的很长,有什么方法可以申请lapply组合成一个列表而不需要手动操作。
df <- data.frame(ID = c(rep(c("A","B","C"),5)),
N = c(rep(c("1","2","3"),5)),
M = c(rep(1,3),rep(2,3),rep(3,3),rep(4,3),rep(5,3)))
applyAlist <- table(df$ID,df$N,df$M)
listOfTable <- list(applyAlist[,,1],applyAlist[,,2],applyAlist[,,3],applyAlist[,,4],applyAlist[,,5])
【问题讨论】:
-
sapply(1:5, function(i) list(table[,,i]))仅供参考,data.table与table无关(我删除了标签) -
@Sotos,这很快,非常感谢
-
或者你可以使用
lapply,即lapply(1:5, function(i) applyAlist[,,i]) -
@akrun,所以当我们使用 lapply 时,不要使用 list()
-
如果您打算使用 data.table 方法,那么您应该意识到 applyAlist 对象有 3 个维度,而 data.tables 只有 2 个维度。您应该说明您希望如何处理该问题.. . 作为一个单独的问题。