R中expand.grid的替代方案

时间:2015-02-04 17:45:32

标签: r

我有一个包含选项向量的列表(我的实际列表要长得多)。

Data <- structure(list(A = c("01", "02", "03", "04", "05", "06", 
"07", "08", "09", "99"), B = c("0", "1", "2", "3", "4", 
"5", "6", "7", "99"), C = c("00", "10", "11", "12", "13", 
"14", "15", "16", "17", "99")), .Names = c("A", "B", 
"C"))

我需要迭代这些选项的所有组合。

我使用expand.grid创建一个包含组合的数据框,然后一次迭代一行数据帧。

combinations <- expand.grid(Data, stringsAsFactors = FALSE)

对于这个小样本&#39;组合&#39;结果是900行,但是数据越大,指数越大,我的数据结果太大。

我在想我可以将我的列表转换为像

这样的矩阵
Data.df <- data.frame(do.call(rbind, lapply(Data, "length<-", max(vapply(Data, length, 1L)))))

然后使用&#39;索引&#39;与每行的当前迭代对应的列。它们都将初始化为1,我可以用它们来获取当前的设置。

Data.df$index <- 1
Data.df$current <- Data.df[cbind(1:nrow(Data.df), as.numeric(Data.df$index))]

我遇到的问题是如何实际迭代所有选项(没有使用嵌套循环来获取我的行数)。由于数据帧的某些行是&#34; NA&#34; s,当它到达1时,这意味着该行已经完成了#34;并且必须移动下一个索引。

如果有不同的,更好的方法,我也会接受建议......

0 个答案:

没有答案