簡體   English   中英

從向量列表構造矩陣列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM