[英]Construct a list of matrices from a list of vectors
我正在嘗試使用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))
僅供參考:以上第二列和第三列用於創建具有第四列值的稀疏矩陣。
FirstTransitionMatrix <- sparseMatrix(FirstTransitionIndicies[, 2], FirstTransitionIndicies[, 3], x=FirstTransitionIndicies[, 4])
非常感謝您可以提供的任何幫助,或可以為我提供幫助的資源!
我想您要使用:
lapply(TransitionIndicies, function(x) matrix(x, nrow=20, ncol=4))
您沒有指定要執行lapply
的函數,這里的錯誤消息非常有用。
您還可以使用(不太明確):
lapply(TransitionIndicies, matrix, nrow=20, ncol=4)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.