我在R中进行动态网络分析,我有一个日期范围列表,作为数据框中的两列。我试图弄清楚如何创建一个全面的数据框/列表,其中包含每个范围内每个日期的每个可能的唯一组合。日期范围都有不同的长度。
例如:
Date1 Date2
1275 1277
1301 1303
1290 1291
我想创建一个数据框或列表,其中每个列/项代表每个范围内日期的唯一可能组合:
1 2 3 4 5 6 7...........?
1275 1276 1277 1275 1275 1275 1276........1277
1301 1301 1301 1302 1303 1302 1202........1303
1290 1290 1290 1290 1290 1291 1290........1291
我对java的直觉是转向嵌套循环,但是避免循环就像R的整个点一样,所以我觉得我的直觉一定是错的。
基于 R- all pairwise combinations of elements from two lists 和 Calculating all possible combinations within a range in R 我已经把这个一起黑了
makeAllDateCombos <- function(earlydatecolumn, latedatecolumn){
allDCs <- NULL
allDCs <- as.data.frame(lapply(earlydatecolumn, function(earlydatecolumn){
lapply(latedatecolumn, function(latedatecolumn){
(table(earlydatecolumn:latedatecolumn))
})
}))
return(allDCs)
}
allTheDCs <- makeAllDCs(collab_dates$Date1, collab_dates$Date2)
然而,这会返回错误。
Error in data.frame(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, :
arguments imply differing number of rows: 16, 27, 6, 21, 26, 1, 5, 4, 31, 11, 18, 13, 15, 23, 17, 7, 10, 9, 24, 19, 33, 20
答案 0 :(得分:0)
使用较少数量的组合,这将起作用:
t(do.call(expand.grid, mapply(seq, Date1, Date2, SIMPLIFY = FALSE)))
不幸的是,从你的评论我推断你有相对大量的组合,从而破坏了同时处理所有组合的机会。我建议你可以使用https://stackoverflow.com/a/36144255/3358272,https://gist.github.com/r2evans/e5531cbab8cf421d14ed略有更新。关键在于迭代每个组合并单独执行某些操作。