我想生成不同元素的所有组合的列表。我发现expand.grid函数似乎做得很好。
lCombi<-expand.grid(c(1,2),c(4,5,6),c(7,8))
Var1 Var2 Var3
1 1 4 7
2 2 4 7
3 1 5 7
4 2 5 7
5 1 6 7
6 2 6 7
7 1 4 8
8 2 4 8
9 1 5 8
10 2 5 8
11 1 6 8
12 2 6 8
现在,如果我理解的话,这是一个包含12行3个元素的列表。但我想要的是一个包含12个元素的列表。我试图将其转置,将其转换为矩阵然后返回列表但没有工作。所以我使用了我的前R方式来做事并提出:
iLength=nrow(lCombi)
lResult<-list()
for(i in 1:iLength){
lResult[[i]]<-lCombi[i,]
}
获取我的lResult列表,其中包含我想要的内容。你能告诉我更有效的方法吗?
答案 0 :(得分:4)
split
函数非常适合将data.frame切换到data.frames列表中:
lResult <- split(lCombi, 1:nrow(lCombi))
如果您希望每个列表元素都是向量,请使用
lapply(lResult, unlist)