【发布时间】:2014-03-21 14:31:49
【问题描述】:
我正在尝试使用 lapply 将向量列表转换为矩阵列表。
恐怕在我的搜索中找不到任何帮助!
我知道这可以通过循环列表的长度来解决,但我一直在尝试更改我的代码以尽可能避免循环。
现实世界的示例比下面的玩具示例具有更大的跨度,因此我正在尝试编写高效的代码。
SparseIndicies <- matrix(0, 100, 4)
SparseIndicies[, 1] <- rep(1:5, 20) #Assign a group (this is what we want to partition on)
SparseIndicies[, 2] <- sample(1:10, 100, replace=TRUE)
SparseIndicies[, 3] <- sample(1:10, 100, replace=TRUE)
SparseIndicies[, 4] <- runif(100, 0, 1)
#Above replicates my data structure, albeit randomly
TransitionIndicies <- split(SparseIndicies, as.factor(SparseIndicies[, 1]))
#We now have a list of transition values for each 'group' - though this is now in vector format
#We can do it explicitly for each list item
FirstTransitionIndicies <- matrix(TransitionIndicies[[1]], nrow=20, ncol=4)
#The below falls over with:
#Error in match.fun(FUN) :
# 'matrix(TransitionIndicies, nrow = 20, ncol = 4)' is not a function, character or symbol
NewTransitionIndicies <- lapply(TransitionIndicies, matrix(TransitionIndicies, nrow=20, ncol=4))
仅供参考:上面的第 2 列和第 3 列用于创建具有第四列值的稀疏矩阵。
FirstTransitionMatrix <- sparseMatrix(FirstTransitionIndicies[, 2], FirstTransitionIndicies[, 3], x=FirstTransitionIndicies[, 4])
非常感谢您提供的任何帮助或您可以为我提供的资源!
【问题讨论】: