我有一个长矩阵(ncol = 6,nrow = 50,000,000 +)。我想将其转换为矩阵列表,其中:
[i,4]和[i,5]是列表的名称(或键),
[i,1]是日期,
[i,2]和[i,3]是一天中的时间,
[i,6]是要存储在列表中的值。
列表中的矩阵都是相同的维度。
for (i in seq(1, nrow(a2015_15))) {
OD_L_2015_15[[
paste(a2015_15[i,4], a2015_15[i,5])
]] [
a2015_15[i,1], paste(a2015_15[i,2], a2015_15[i,3])
] =
as.numeric(a2015_15[i,6])
}
按原样,运行需要一两个小时,这对于速度较慢的计算机尤其如此。
有什么建议可以使用apply语句更快地运行吗? 我试图将调用限制为2015 - 15(通过保存a2015_15 [i,]然后引用它)但它似乎没有帮助。
感谢。
编辑: 这是我想要改变的矩阵:
该列表将分为: OD_L_2015_15 [[密钥1,密钥2]] [日期,C(时间,时间2)] =值
答案 0 :(得分:0)
赋值操作似乎是可矢量化的,即如果它适用于i的一个值,它也应该成功为i
的矢量。 。你有没有尝试过:
i <- seq(1,nrow(a2015_15))
OD_L_2015_15 <- list()
OD_L_2015_15[[ paste(a2015_15[i,4], a2015_15[i,5])]] [
a2015_15[i,1], paste(a2015_15[i,2], a2015_15[i,3]) ] <-
as.numeric(a2015_15[i,6])
这是未经测试的,我依靠你对循环成功的肯定。如果您需要经过测试的解决方案,则应该发布此矩阵的较小版本,因为您的描述没有&#34;接地&#34;在&#34;现实&#34;那一刻。